站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        在 Ubuntu 18.04 上使用 Let’s Encrypt 來保護(hù) Nginx

        Let’s Encrypt 是由 Internet Security Research Group(ISRG)開發(fā)的免費(fèi)開放證書頒發(fā)機(jī)構(gòu)。 今天幾乎所有瀏覽器都信任 Let’s Encrypt 頒發(fā)的證書。

        在本教程中,我們將提供有關(guān)如何使用 Ubuntu 18.04 上的 certbot 工具使用 Let’s Encrypt 來保護(hù)您的 Nginx 的分步說明。

        準(zhǔn)備條件

        在繼續(xù)本教程之前,請(qǐng)確保您已滿足以下先決條件:

        • 您有一個(gè)指向公共服務(wù)器 IP 的域名。 在本教程中,我們將使用 example.com。
        • 您按照這些說明安裝了 Nginx 。
        • 您有一個(gè)適用于您的域的服務(wù)器塊。 您可以按照本文獲取有關(guān)如何創(chuàng)建一個(gè)的詳細(xì)信息。

        安裝 Certbot

        Certbot 是一個(gè)功能齊全且易于使用的工具,可以自動(dòng)完成獲取和更新 Let’s Encrypt SSL證書以及配置Web服務(wù)器以使用它們的任務(wù)。 certbot 包包含在默認(rèn)的 Ubuntu 存儲(chǔ)庫中。

        更新軟件包列表并安裝 certbot 軟件包:

        sudo apt update  sudo apt install certbot

        生成強(qiáng)Dh(Diffie-Hellman)組

        Diffie-Hellman 密鑰交換(DH)是一種在不安全的通信信道上安全地交換密碼密鑰的方法。 我們將生成一組新的 2048 位 DH 參數(shù)以加強(qiáng)安全性:

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

        如果您愿意,可以將大小更改為 4096 位,但在這種情況下,生成可能需要超過 30 分鐘,具體取決于系統(tǒng)熵。

        獲取Let’s Encrypt SSL證書

        要獲得我們域的 SSL 證書,我們將使用 Webroot 插件,該插件通過在 ${webroot-path}/。熟知 /acme-challenge 目錄和Let的加密中為請(qǐng)求的域創(chuàng)建臨時(shí)文件來工作。 驗(yàn)證服務(wù)器發(fā)出 HTTP 請(qǐng)求以驗(yàn)證所請(qǐng)求域的DNS是否解析為運(yùn)行 certbot 的服務(wù)器。

        為了使它更簡單,我們將把 .well-known/acme-challenge 的所有 HTTP 請(qǐng)求映射到單個(gè)目錄 / var/lib/letsencrypt

        以下命令將創(chuàng)建目錄并使其可以為 Nginx 服務(wù)器寫入。

        mkdir -p /var/lib/letsencrypt/.well-known  chgrp www-data /var/lib/letsencrypt  chmod g+s /var/lib/letsencrypt

        為避免重復(fù)代碼,請(qǐng)創(chuàng)建以下兩個(gè)片段,我們將在所有Nginx服務(wù)器塊文件中包含這些片段。

        打開文本編輯器并創(chuàng)建第一個(gè)片段 letsencrypt.conf

        sudo nano /etc/nginx/snippets/letsencrypt.conf

        /etc/nginx/snippets/letsencrypt.conf

        location ^~ /.well-known/acme-challenge/ {    allow all;    root /var/lib/letsencrypt/;    default_type "text/plain";    try_files $uri =404;  }

        創(chuàng)建第二個(gè)代碼段 .conf,其中包括 Mozilla 推薦的削片機(jī),支持 OCSP Stapling,HTTP 嚴(yán)格傳輸安全(HSTS)并強(qiáng)制執(zhí)行少數(shù)以安全為中心的 HTTP 頭。

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

        /etc/nginx/snippets/ssl.conf

        ssl_dhparam /etc/ssl/certs/dhparam.pem;  ssl_session_timeout 1d;  ssl_session_cache shared:SSL:50m;  ssl_session_tickets off;    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';  ssl_prefer_server_ciphers on;    ssl_stapling on;  ssl_stapling_verify on;  resolver 8.8.8.8 8.8.4.4 valid=300s;  resolver_timeout 30s;    add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";  add_header X-Frame-Options SAMEORIGIN;  add_header X-Content-Type-Options nosniff;

        創(chuàng)建片段后,打開域服務(wù)器塊并包含 letsencrypt.conf 片段,如下所示:

        /etc/nginx/sites-available/example.com

        server {    listen 80;    server_name example.com www.example.com;      include snippets/letsencrypt.conf;  }

        重新加載 Nginx 配置以使更改生效:

        sudo systemctl reload nginx

        您現(xiàn)在可以使用 webroot 插件運(yùn)行 Certbot 并通過發(fā)出以下命令獲取 SSL 證書文件:

        sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

        如果成功獲得 SSL 證書,certbot 將打印以下消息:

        IMPORTANT NOTES:   - Congratulations! Your certificate and chain have been saved at:     /etc/letsencrypt/live/example.com/fullchain.pem     Your key file has been saved at:     /etc/letsencrypt/live/example.com/privkey.pem     Your cert will expire on 2018-07-28. To obtain a new or tweaked     version of this certificate in the future, simply run certbot     again. To non-interactively renew *all* of your certificates, run     "certbot renew"   - Your account credentials have been saved in your Certbot     configuration directory at /etc/letsencrypt. You should make a     secure backup of this folder now. This configuration directory will     also contain certificates and private keys obtained by Certbot so     making regular backups of this folder is ideal.   - If you like Certbot, please consider supporting our work by:       Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate     Donating to EFF:                    https://eff.org/donate-le

        現(xiàn)在您已擁有證書文件,您可以按如下方式編輯域服務(wù)器塊:

        sudo nano /etc/nginx/sites-available/example.com

        /etc/nginx/sites-available/example.com

        server {      listen 80;      server_name www.example.com example.com;        include snippets/letsencrypt.conf;      return 301 https://$host$request_uri;  }    server {      listen 443 ssl http2;      server_name www.example.com;        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;      ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;      ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;      include snippets/ssl.conf;      include snippets/letsencrypt.conf;        return 301 https://example.com$request_uri;  }    server {      listen 443 ssl http2;      server_name example.com;        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;      ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;      ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;      include snippets/ssl.conf;      include snippets/letsencrypt.conf;        # . . . other code  }

        通過上面的配置,我們強(qiáng)制 HTTPS 并從 www 重定向到非 www 版本。

        重新加載 Nginx 服務(wù)以使更改生效:

        sudo systemctl reload nginx

        自動(dòng)續(xù)訂讓我們加密 SSL 證書

        我們的加密證書有效期為90天。 要在證書過期之前自動(dòng)續(xù)訂證書,certbo t包會(huì)創(chuàng)建一個(gè) cronjob,每天運(yùn)行兩次,并在到期前30天自動(dòng)續(xù)訂任何證書。

        由于我們?cè)诶m(xù)訂證書后使用 certbot webroot 插件,因此我們還必須重新加載 nginx 服務(wù)。 將 –renew-hook“systemctl reload nginx”附加到 /etc/cron.d/certbot 文件,使其如下所示:

        sudo nano /etc/cron.d/certbot
        0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e ‘sleep int(rand(3600))’ && certbot -q renew –renew-hook “systemctl reload nginx”

        要測(cè)試?yán)m(xù)訂過程,可以使用 certbot –dry-run 開關(guān):

        sudo certbot renew --dry-run

        如果沒有錯(cuò)誤,則表示續(xù)訂過程成功。

        總結(jié)

        在本教程中,您使用了Let的加密客戶端 certbot 來下載域的 SSL 證書。 您還創(chuàng)建了 Nginx 代碼段以避免重復(fù)代碼并配置 Nginx 以使用證書。 在本教程結(jié)束時(shí),您已設(shè)置了一個(gè)用于自動(dòng)證書續(xù)訂的 cronjob。

        如果您想了解有關(guān)如何使用 Certbot 的更多信息,他們的文檔是一個(gè)很好的學(xué)習(xí)地方。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 久久国产成人亚洲精品影院| 亚洲AV无码精品色午夜果冻不卡| 麻豆国内精品欧美在线| 欧洲成人午夜精品无码区久久| 国产欧美日本精品| 国产精品1区2区| 久久久久人妻精品一区| 欧美精品一区二区三区免费观看| 四虎国产精品免费久久5151| 国产精品99精品无码视亚| 人妻少妇精品视中文字幕国语| 午夜精品久久久久久久无码| 国产精品成人国产乱一区| 久久精品一区二区三区不卡| 成人午夜视频精品一区| 无码精品国产一区二区三区免费| 久热精品视频第一页| 国产香蕉国产精品偷在线| 91精品国产自产在线老师啪| 久久91精品国产91久久麻豆| 动漫精品专区一区二区三区不卡| 精品无码无人网站免费视频| 综合人妻久久一区二区精品| 亚洲AV无码乱码精品国产| 久久久久久无码国产精品中文字幕| 国产免费久久精品99久久| 国产精品毛片a∨一区二区三区| 办公室久久精品| 国产成人精品久久亚洲高清不卡| 亚洲综合一区二区精品导航| 欧美精品国产一区二区| 精品精品国产高清a毛片牛牛| 国产精品视频免费观看| 国产成人精品福利网站在线| 国产精品分类视频分类一区| 国产精品爽爽va在线观看网站| 精品国产麻豆免费人成网站| 国产精品久久波多野结衣| 国产精品亚洲欧美一区麻豆 | 精品欧洲av无码一区二区 | 亚洲综合精品网站|