在Centos和Nginx中配置部署Let's Encrypt

查看自己的服務器配置:CentOS release 6.5 (Final)
命令: cat /etc/issue 或cat /etc/redhat-release
查看系統多少位:getconf LONG_BIT

一、配置Nginx
首先安裝系統缺少的包:

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

安裝穩定版的Nginx:
wget http://nginx.org/download/nginx-1.10.2.tar.gz
下載到/usr/local目錄下

tar –zxvf nginx-1.10.2.tar.gz

進入nginx 文件夾目錄輸入以下命令:

./configure --prefix=/usr/local/nginx1.10 --with-http_stub_status_module --with-http_ssl_module

(後面兩項是nginx缺少http_ssl_module模塊,配置ssl後nginx啓動失敗,提示一下錯誤:nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf)
–prefix=PATH : 指定nginx的安裝目錄。默認 /usr/local/nginx
–with-http_ssl_module : 使用https協議模塊。默認情況下,該模塊沒有被構建。前提是openssl與openssl-devel已安裝
–with-http_stub_status_module : 用來監控 Nginx 的當前狀態
配置後輸入以下命令:

make && make install

安裝後啓動項目:進入sbin目錄
啓動:./nginx
關閉:./nginx –s stop
考慮到安裝let’s Encrypt需要佔用80端口,可以先關閉Nginx
二、 如果已經安裝過nginx,但是未配置ngx_http_ssl_module模塊
需要重新配置:

./configure --prefix=/usr/local/nginx1.10 --with-http_stub_status_module --with-http_ssl_module

配置完成後,需要安裝make,不用運行make install(會被覆蓋安裝)
將之前安裝的nginx備份
cp nginx nginx.bak
停止nginx
將重新編譯完成的nginx覆蓋原有的nginx

cp ./objs/nginx /usr/local/nginx1.10/sbin/

然後啓動重新查看是否添加成功

/usr/local/nginx1.10/sbin/nginx -V

三、 配置Let‘s Encrypt
系統要求:官方文檔上已經寫出支持python2.6或2.7的操作系統上,python3.x有望在未來支持;需要使用Root賬戶安裝,有寫入文件/etc/letsencrypt, /var/log/letsencrypt, /var/lib/letsencrypt的權限,安裝時需要使用80和443端口
首先安裝git 和bc ,並從github上將代碼克隆到本地

sudo yum –y git bc
sudo git clone https://github.com/certbot/certbot /opt/certbot-master

安裝所有依賴:

sudo /opt/certbot-master/letsencrypt-auto --help

(安裝過程請耐心等待)
綁定域名使用 standalone 的方式來獲取證書。這種方式需要把 Nginx 服務停掉,讓 standalone 服務器直接佔用 80 端口來等待 Let’s Encrypt 服務端的驗證。

sudo /opt/certbot-master/letsencrypt-auto --help –standalone –email 郵箱地址(郵箱地址是用來接收緊急通知和找回密鑰的) –d 域名

中間會出現界面驗證你的郵箱地址是否有效
命令完成後,最新版本的證書位置:/etc/letsencrypt/live/域名/
每個域名一個目錄,有以下文件:
域名下文件
cert.pem 申請的服務器證書文件
privkey.pem 服務器證書對應的私鑰
chain.pem 除服務器證書外,瀏覽器解析所需的其他全部證書,比如根證書和中間證書
fullchain.pem 包含服務器證書的全部證書鏈文件

配置nginx,需要生成dhparam.pem文件

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

修改nginx.conf文件

  1. 修改80端口的監聽
server
    {
        listen 80;
        return 301 https://域名$request_uri;
        server_name 域名 域名;
    }
  1. 增加以下代碼
server {
        listen 443 ssl;
        server_name 域名;
        ssl_certificate /etc/letsencrypt/live/域名/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/域名/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security max-age=15768000;
        # The rest of your server block
        root /path/to/root;
        index index.html index.htm;
        location / {
                try_files $uri $uri/ =404;
        }
}

配置完成後重啓nginx
在谷歌瀏覽器中輸入域名,谷歌瀏覽器查看詳情
谷歌圖片
或者通過此網址查詢:https://www.ssllabs.com/ssltest/analyze.html?d=域名
這裏寫圖片描述
自動續期問題:(注意關閉nginx)輸入
./letsencrypt-auto renew 手動續期會發現提示還未到期,無法續期
可以使用

./letsencrypt-auto renew --force-renewal

強制更新續期
成功提示
這樣的話就顯示續期成功
可以寫一個腳本,創建個定時任務,定期自動續期。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章