欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Ubuntu16.04上為Nginx創(chuàng)建自簽名SSL證書

 更新時間:2024年05月13日 10:15:42   作者:白如意i  
SSL證書是實現(xiàn)HTTPS的關(guān)鍵組成部分,本文主要介紹了Ubuntu16.04上為Nginx創(chuàng)建自簽名SSL證書,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧

簡介

TLS,即傳輸層安全協(xié)議,及其前身SSL,即安全套接字層,是用于將普通流量包裝在受保護的加密包裝中的網(wǎng)絡(luò)協(xié)議。

使用這項技術(shù),服務(wù)器可以在服務(wù)器和客戶端之間安全地發(fā)送流量,而不會被外部方攔截。證書系統(tǒng)還幫助用戶驗證他們正在連接的站點的身份。

在本指南中,我們將向您展示如何在 Ubuntu 16.04 服務(wù)器上為 Nginx web 服務(wù)器設(shè)置自簽名 SSL 證書。

先決條件

在開始之前,您應(yīng)該已經(jīng)配置了一個具有sudo權(quán)限的非根用戶。您可以按照我們的 Ubuntu 16.04 初始服務(wù)器設(shè)置指南來了解如何設(shè)置此類用戶帳戶。

您還需要已安裝 Nginx web 服務(wù)器。如果您想在服務(wù)器上安裝完整的 LEMP(Linux、Nginx、MySQL、PHP)堆棧,可以按照我們的 Ubuntu 16.04 上設(shè)置 LEMP 的指南進行操作。

如果您只想要 Nginx web 服務(wù)器,可以按照我們的 Ubuntu 16.04 上安裝 Nginx 的指南進行操作。

完成先決條件后,請繼續(xù)以下操作。

步驟 1:創(chuàng)建 SSL 證書

TLS/SSL 通過使用公共證書和私鑰的組合來工作。SSL 密鑰在服務(wù)器上保密。它用于加密發(fā)送給客戶端的內(nèi)容。SSL 證書與請求內(nèi)容的任何人公開共享。它可用于解密由相關(guān) SSL 密鑰簽名的內(nèi)容。

我們可以使用 OpenSSL 一次性創(chuàng)建自簽名密鑰和證書對:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

您將被要求回答一系列問題。在我們討論這些問題之前,讓我們看看我們正在發(fā)出的命令中發(fā)生了什么:

  • openssl:這是用于創(chuàng)建和管理 OpenSSL 證書、密鑰和其他文件的基本命令行工具。
  • req:此子命令指定我們要使用 X.509 證書簽名請求(CSR)管理。“X.509” 是 SSL 和 TLS 遵循的用于其密鑰和證書管理的公鑰基礎(chǔ)設(shè)施標準。我們要創(chuàng)建一個新的 X.509 證書,因此我們正在使用此子命令。
  • -x509:這通過告訴實用程序我們要創(chuàng)建自簽名證書,而不是生成證書簽名請求,進一步修改了前一個子命令。
  • -nodes:這告訴 OpenSSL 跳過使用密碼短語保護我們的證書的選項。我們需要 Nginx 能夠在服務(wù)器啟動時無需用戶干預(yù)地讀取文件。密碼短語會阻止這種情況發(fā)生,因為我們每次重新啟動后都需要輸入密碼。
  • -days 365:此選項設(shè)置證書被視為有效的時間長度。我們在這里設(shè)置為一年。
  • -newkey rsa:2048:這指定我們要同時生成新證書和新密鑰。我們沒有在之前的步驟中創(chuàng)建用于簽署證書的密鑰,因此我們需要同時創(chuàng)建它和證書。rsa:2048 部分告訴它生成一個長度為 2048 位的 RSA 密鑰。
  • -keyout:此行告訴 OpenSSL 在哪里放置我們正在創(chuàng)建的生成私鑰文件。
  • -out:這告訴 OpenSSL 在哪里放置我們正在創(chuàng)建的證書。

正如我們上面所述,這些選項將創(chuàng)建一個密鑰文件和一個證書。我們將被要求關(guān)于我們的服務(wù)器的一些問題,以便將信息正確嵌入證書中。

適當填寫提示。最重要的一行是請求“通用名稱(例如服務(wù)器 FQDN 或您的名稱)”。您需要輸入與您的服務(wù)器關(guān)聯(lián)的域名或更可能是您服務(wù)器的公共 IP 地址。

提示的全部內(nèi)容將類似于以下內(nèi)容:

Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
Organizational Unit Name (eg, section) []:Ministry of Water Slides
Common Name (e.g. server FQDN or YOUR name) []:server_IP_address
Email Address []:admin@your_domain.com

您創(chuàng)建的兩個文件將放置在/etc/ssl目錄的適當子目錄中。

當我們使用 OpenSSL 時,我們還應(yīng)該創(chuàng)建一個強大的 Diffie-Hellman 組,用于與客戶端協(xié)商完美前向保密。

我們可以通過輸入以下內(nèi)容來實現(xiàn):

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

這可能需要幾分鐘的時間,但完成后,您將在/etc/ssl/certs/dhparam.pem上擁有一個強大的 DH 組,我們可以在我們的配置中使用。

步驟 2:配置 Nginx 使用 SSL

我們已經(jīng)在 /etc/ssl 目錄下創(chuàng)建了我們的密鑰和證書文件。現(xiàn)在我們只需要修改我們的 Nginx 配置以利用這些文件。

我們將對我們的配置進行一些調(diào)整。

  • 我們將創(chuàng)建一個包含 SSL 密鑰和證書文件位置的配置片段。
  • 我們將創(chuàng)建一個包含強大 SSL 設(shè)置的配置片段,這些設(shè)置可以在將來與任何證書一起使用。
  • 我們將調(diào)整我們的 Nginx 服務(wù)器塊以處理 SSL 請求,并使用上述兩個片段。

這種配置 Nginx 的方法將允許我們保持清晰的服務(wù)器塊,并將常見的配置段放入可重用的模塊中。

創(chuàng)建指向 SSL 密鑰和證書的配置片段

首先,讓我們在 /etc/nginx/snippets 目錄下創(chuàng)建一個新的 Nginx 配置片段。

為了正確區(qū)分該文件的目的,讓我們將其命名為 self-signed.conf

sudo nano /etc/nginx/snippets/self-signed.conf

在這個文件中,我們只需要將 ssl_certificate 指令設(shè)置為我們的證書文件,將 ssl_certificate_key 設(shè)置為相關(guān)的密鑰。在我們的情況下,這將如下所示:

ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

當您添加了這些行后,保存并關(guān)閉文件。

創(chuàng)建包含強加密設(shè)置的配置片段

接下來,我們將創(chuàng)建另一個片段,用于定義一些 SSL 設(shè)置。這將使用強大的 SSL 密碼套件并啟用一些高級功能,有助于保持我們的服務(wù)器安全。

我們將設(shè)置的參數(shù)可以在將來的 Nginx 配置中重復(fù)使用,因此我們將給文件一個通用的名稱:

sudo nano /etc/nginx/snippets/ssl-params.conf

為了安全地設(shè)置 Nginx SSL,我們將使用 Remy van Elst 在 Cipherli.st 網(wǎng)站上的建議。該網(wǎng)站旨在為流行軟件提供易于消化的加密設(shè)置。您可以在這里閱讀更多關(guān)于他在 Nginx 選擇方面的決定。

對于我們的目的,我們可以完全復(fù)制所提供的設(shè)置。我們只需要做一些小的修改。

首先,我們將添加我們首選的上游請求的 DNS 解析器。在本指南中,我們將使用 Google 的解析器。我們還將設(shè)置 ssl_dhparam 設(shè)置,指向我們之前生成的 Diffie-Hellman 文件。

最后,您應(yīng)該花一點時間了解 HTTP 嚴格傳輸安全性(HSTS),特別是關(guān)于“preload”功能。預(yù)加載 HSTS 提供了增強的安全性,但如果意外啟用或錯誤啟用可能會產(chǎn)生深遠的后果。在本指南中,我們不會預(yù)加載這些設(shè)置,但如果您確信理解了其影響,可以進行修改:

# 來自 https://cipherli.st/
# 和 https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# 暫時禁用預(yù)加載 HSTS。如果您理解其影響,可以使用包含“preload”指令的已注釋的頭行。
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_dhparam /etc/ssl/certs/dhparam.pem;

因為我們使用的是自簽名證書,所以 SSL stapling 將不會被使用。Nginx 將簡單地輸出警告,為我們的自簽名證書禁用 stapling,并繼續(xù)正常運行。

完成后保存并關(guān)閉文件。

調(diào)整 Nginx 配置以使用 SSL

現(xiàn)在我們有了我們的片段,我們可以調(diào)整我們的 Nginx 配置以啟用 SSL。

在本指南中,我們假設(shè)您正在使用 /etc/nginx/sites-available 目錄中的 default 服務(wù)器塊文件。如果您使用不同的服務(wù)器塊文件,請在下面的命令中替換其名稱。

在繼續(xù)之前,讓我們先備份當前的服務(wù)器塊文件:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

現(xiàn)在,打開服務(wù)器塊文件進行調(diào)整:

sudo nano /etc/nginx/sites-available/default

在文件中,您的服務(wù)器塊可能開始如下所示:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # SSL configuration

    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;

    . . .

我們將修改此配置,以便將未加密的 HTTP 請求自動重定向到加密的 HTTPS。這為我們的站點提供了最佳安全性。如果您希望允許 HTTP 和 HTTPS 流量,請使用以下備用配置。

我們將把配置分成兩個單獨的塊。在兩個第一條 listen 指令之后,我們將添加一個 server_name 指令,設(shè)置為您的服務(wù)器域名或更可能的 IP 地址。然后,我們將設(shè)置一個重定向到我們將要創(chuàng)建的第二個服務(wù)器塊。之后,我們將關(guān)閉這個簡短的塊:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name server_domain_or_IP;
    return 302 https://$server_name$request_uri;
}

    # SSL configuration

    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;

    . . .

接下來,我們需要在下面直接開始一個新的服務(wù)器塊,以包含剩余的配置。我們可以取消注釋使用端口 443 的兩個 listen 指令。我們可以在這些行中添加 http2 以在此塊中啟用 HTTP/2。之后,我們只需要包含我們設(shè)置的兩個片段文件:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name server_domain_or_IP;
    return 302 https://$server_name$request_uri;
}

server {

    # SSL configuration

    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    include snippets/self-signed.conf;
    include snippets/ssl-params.conf;

    . . .

完成后保存并關(guān)閉文件。

(備用配置)允許 HTTP 和 HTTPS 流量

如果您希望或需要允許加密和非加密內(nèi)容,您將需要稍微不同地配置 Nginx。一般來說,如果可以避免,這通常是不建議的,但在某些情況下可能是必要的?;旧希覀儗蓚€單獨的服務(wù)器塊壓縮成一個塊,并刪除重定向:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;

    server_name server_domain_or_IP;
    include snippets/self-signed.conf;
    include snippets/ssl-params.conf;

    . . .

完成后保存并關(guān)閉文件。

步驟 3:調(diào)整防火墻

如果您已經(jīng)啟用了 ufw 防火墻,如先決指南中推薦的那樣,您需要調(diào)整設(shè)置以允許 SSL 流量。幸運的是,Nginx 在安裝時會向 ufw 注冊一些配置文件。

我們可以通過輸入以下命令來查看可用的配置文件:

sudo ufw app list

您應(yīng)該會看到以下類似的列表:

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

您可以通過輸入以下命令來查看當前設(shè)置:

sudo ufw status

它可能看起來像這樣,意味著只有 HTTP 流量被允許訪問 Web 服務(wù)器:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

為了額外允許 HTTPS 流量,我們可以允許 “Nginx Full” 配置文件,然后刪除多余的 “Nginx HTTP” 配置文件允許:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

現(xiàn)在您的狀態(tài)應(yīng)該是這樣的:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

步驟 4:啟用 Nginx 中的更改

現(xiàn)在我們已經(jīng)做出了更改并調(diào)整了防火墻,我們可以重新啟動 Nginx 來實施我們的新更改。

首先,我們應(yīng)該檢查我們的文件中是否有語法錯誤。我們可以通過輸入以下命令來執(zhí)行此操作:

sudo nginx -t

如果一切順利,您將會得到以下類似的結(jié)果:

nginx: [warn] "ssl_stapling" ignored, issuer certificate not found
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

請注意開頭的警告。如前所述,由于我們的自簽名證書無法使用 SSL stapling,因此此特定設(shè)置會產(chǎn)生警告。這是預(yù)期的,我們的服務(wù)器仍然可以正確加密連接。

如果您的輸出與上述相匹配,則您的配置文件沒有語法錯誤。我們可以安全地重新啟動 Nginx 來實施我們的更改:

sudo systemctl restart nginx

步驟 5:測試加密

現(xiàn)在,我們準備測試我們的 SSL 服務(wù)器。

打開您的 Web 瀏覽器,然后在地址欄中輸入 https://,后面跟上您服務(wù)器的域名或 IP:

https://server_domain_or_IP

由于我們創(chuàng)建的證書未經(jīng)您瀏覽器信任的證書頒發(fā)機構(gòu)簽名,您可能會看到以下類似的警告:

!Nginx self-signed cert warning

這是預(yù)期的和正常的。我們只關(guān)心證書的加密方面,而不是主機真實性的第三方驗證。點擊 “高級”,然后點擊提供的鏈接以繼續(xù)訪問您的主機:

!Nginx self-signed override

您應(yīng)該會進入您的站點。如果您查看瀏覽器地址欄,您會看到一個帶有 “x” 的鎖。在這種情況下,這只是意味著無法驗證證書。它仍然在加密您的連接。

如果您配置了 Nginx 兩個服務(wù)器塊,自動將 HTTP 內(nèi)容重定向到 HTTPS,您還可以檢查重定向是否正常工作:

http://server_domain_or_IP

如果結(jié)果顯示相同的圖標,這意味著您的重定向已經(jīng)正確工作。

步驟 6:更改為永久重定向

如果您的重定向工作正常,并且您確定只想允許加密流量,您應(yīng)該修改 Nginx 配置以使重定向變?yōu)橛谰眯浴?/p>

再次打開您的服務(wù)器塊配置文件:

sudo nano /etc/nginx/sites-available/default

找到 return 302 并將其更改為 return 301

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name server_domain_or_IP;
	return 301 https://$server_name$request_uri;
}

保存并關(guān)閉文件。

檢查您的配置是否存在語法錯誤:

sudo nginx -t

當您準備好時,重新啟動 Nginx 以使重定向變?yōu)橛谰眯裕?/p>

sudo systemctl restart nginx

結(jié)論

您已經(jīng)配置了 Nginx 服務(wù)器以使用強加密來處理客戶端連接。這將允許您安全地提供請求,并防止外部方讀取您的流量。

到此這篇關(guān)于Ubuntu16.04上為Nginx創(chuàng)建自簽名SSL證書的文章就介紹到這了,更多相關(guān)Nginx創(chuàng)建自簽名SSL證書內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nginx不支持apk ipa文件下載的設(shè)置方法

    nginx不支持apk ipa文件下載的設(shè)置方法

    今天在幫客戶配置nginx服務(wù)器的時候,對方需要支持apk ipa文件下載,這里簡單分享下,方便需要的朋友
    2014-03-03
  • Nginx?Gunicorn?flask項目部署思路分析詳解

    Nginx?Gunicorn?flask項目部署思路分析詳解

    這篇文章主要為大家介紹了Nginx?Gunicorn?flask項目部署思路分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Nginx正向反向代理區(qū)別及原理解析

    Nginx正向反向代理區(qū)別及原理解析

    這篇文章主要介紹了Nginx正向反向代理區(qū)別及原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2020-03-03
  • Nginx 重定向時獲取域名的方法示例

    Nginx 重定向時獲取域名的方法示例

    本篇文章主要介紹了Nginx 重定向時獲取域名的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 配置Nginx的防盜鏈的操作方法

    配置Nginx的防盜鏈的操作方法

    這篇文章主要介紹了配置Nginx的防盜鏈的操作方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • nginx lua集成kafka的實現(xiàn)方法

    nginx lua集成kafka的實現(xiàn)方法

    這篇文章主要介紹了nginx lua集成kafka的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-08-08
  • 一次nginx 504 Gateway Time-out錯誤排查、解決記錄

    一次nginx 504 Gateway Time-out錯誤排查、解決記錄

    這篇文章主要介紹了一次nginx 504 Gateway Time-out錯誤排查、解決記錄,經(jīng)過反復(fù)檢查,發(fā)現(xiàn)造成這個問題的原因就是PHP的CURL沒有設(shè)置超時時間,解決辦法只要設(shè)置超時時間或者修改一下nginx的配置即可解決,需要的朋友可以參考下
    2014-05-05
  • 在nginx中設(shè)置三級域名的方法示例

    在nginx中設(shè)置三級域名的方法示例

    這篇文章主要介紹了在nginx中設(shè)置三級域名的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • nginx 虛擬主機設(shè)置實例(多網(wǎng)站配置)

    nginx 虛擬主機設(shè)置實例(多網(wǎng)站配置)

    Nginx 虛擬主機設(shè)置一例,主要是針對虛擬主機的設(shè)置,多網(wǎng)站配置方法,需要的朋友可以參考下
    2013-02-02
  • Nginx實現(xiàn)灰度發(fā)布的常見方法小結(jié)

    Nginx實現(xiàn)灰度發(fā)布的常見方法小結(jié)

    Nginx 就像是一個智能的交通指揮員,它位于用戶請求和后端服務(wù)之間,負責對請求進行分發(fā)和管理,在灰度發(fā)布中,Nginx 可以根據(jù)我們設(shè)定的規(guī)則,這篇文章給大家介紹了Nginx實現(xiàn)灰度發(fā)布的常見方法小結(jié),需要的朋友可以參考下
    2024-07-07

最新評論