亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

簡介

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

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

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

先決條件

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

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

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

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

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

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

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

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

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

提示的全部內容將類似于以下內容:

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 時,我們還應該創(chuàng)建一個強大的 Diffie-Hellman 組,用于與客戶端協(xié)商完美前向保密。

我們可以通過輸入以下內容來實現(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)建了我們的密鑰和證書文件?,F(xiàn)在我們只需要修改我們的 Nginx 配置以利用這些文件。

我們將對我們的配置進行一些調整。

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

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

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

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

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

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

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

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

當您添加了這些行后,保存并關閉文件。

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

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

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

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

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

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

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

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

# 來自 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;
# 暫時禁用預加載 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ù)正常運行。

完成后保存并關閉文件。

調整 Nginx 配置以使用 SSL

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

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

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

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

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

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

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

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 指令,設置為您的服務器域名或更可能的 IP 地址。然后,我們將設置一個重定向到我們將要創(chuàng)建的第二個服務器塊。之后,我們將關閉這個簡短的塊:

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;

    . . .

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

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;

    . . .

完成后保存并關閉文件。

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

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

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;

    . . .

完成后保存并關閉文件。

步驟 3:調整防火墻

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

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

sudo ufw app list

您應該會看到以下類似的列表:

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

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

sudo ufw status

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

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)應該是這樣的:

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)做出了更改并調整了防火墻,我們可以重新啟動 Nginx 來實施我們的新更改。

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

sudo nginx -t

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

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,因此此特定設置會產生警告。這是預期的,我們的服務器仍然可以正確加密連接。

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

sudo systemctl restart nginx

步驟 5:測試加密

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

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

https://server_domain_or_IP

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

!Nginx self-signed cert warning

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

!Nginx self-signed override

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

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

http://server_domain_or_IP

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

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

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

再次打開您的服務器塊配置文件:

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;
}

保存并關閉文件。

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

sudo nginx -t

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

sudo systemctl restart nginx

結論

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

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

相關文章

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

    nginx不支持apk ipa文件下載的設置方法

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

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

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

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

    這篇文章主要介紹了Nginx正向反向代理區(qū)別及原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    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)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 一次nginx 504 Gateway Time-out錯誤排查、解決記錄

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

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

    在nginx中設置三級域名的方法示例

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

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

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

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

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

最新評論