如何爲網站配置(Let’s Encrypt)HTTPS協議

如何爲網站配置(Let’s Encrypt)HTTPS協議

之前寫過另外一篇文章《Windows下安裝Xampp並配置SSL》,有興趣可以看下。一直糾結我這個博客要不要上HTTPS協議,發現好多站都是用的Let’s Encrypt SSL證書,我也好奇,今天手賤配置了SSL。這個證書有效期90天,不過可以用腳本自動續期。

 Let's Encrypt是國外一個公共的免費SSL項目,由 Linux 基金會託管,它的來頭不小,由Mozilla、思科、Akamai、IdenTrust和EFF等組織發起,目的就是向網站自動簽發和管理免費證書,以便加速互聯網由HTTP過渡到HTTPS,目前Facebook等大公司開始加入贊助行列。Let's Encrypt已經得了 IdenTrust 的交叉簽名,這意味着其證書現在已經可以被Mozilla、Google、Microsoft和Apple等主流的瀏覽器所信任,你只需要在Web 服務器證書鏈中配置交叉簽名,瀏覽器客戶端會自動處理好其它的一切,Let's Encrypt安裝簡單,未來大規模採用可能性非常大。

下面給大家說說怎麼配置:
先說下網站環境
System environment: Centos 7
Nginx version: nginx/1.4.7
本人懶省事,用的阿里雲一鍵安裝包sh-1.5.5

下面進入正題
1、配置nginx支持https協議訪問,需要在編譯安裝nginx的時候添加相應的模塊–with-http_ssl_module–with-http_gzip_static_module,命令查看是否有相應模塊,沒有需要重新編譯,默認一鍵安裝包都帶了。

nginx -V

2、防火牆開啓https協議默認端口443

# vi /etc/sysconfig/iptables #編輯防火牆配置文件,添加以下代碼
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
:wq! #保存退出
service iptables restart(/bin/systemctl restart  iptables.service)  #重啓防火牆

3、利用腳本快速獲取Let’s Encrypt SSL證書

# mkdir /alidata/server/nginx/certs/  //創建certs目錄
# cd /alidata/server/nginx/certs/     //進入certs目錄
下載腳本文件
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh
給予腳本755權限
chmod +x letsencrypt.sh

4、配置letsencrypt.conf文件

vi letsencrypt.conf

# only modify the values, key files will be generated automaticly.
ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="lirongyao.com.key"
DOMAIN_DIR="/alidata/www/site"
DOMAINS="DNS:lirongyao.com"
#ECC=TRUE
#LIGHTTPD=TRUE

:wq!   保存

5、執行腳本生成需要的key文件

# ./letsencrypt.sh letsencrypt.conf
Generate account key...
Generating RSA private key, 4096 bit long modulus
................++
.......................................................................................................................................................................................................................................................................................................++
e is 65537 (0x10001)
Generate domain key...
Generating RSA private key, 2048 bit long modulus
................................................................+++
.......................+++
e is 65537 (0x10001)
Generate CSR...lirongyao.csr
Parsing account key...
Parsing CSR...
Registering account...
Registered!
Verifying lirongyao.com...
lirongyao.com verified!
Signing certificate...
Certificate signed!
New cert: lirongyao.chained.crt has been generated  //看到這個說明獲取證書成功

如果出現如下錯誤信息:

錯誤1

Traceback (most recent call last):
File “/tmp/acme_tiny.py“, line 2, in <module>
import argparse, subprocess, json, os, sys, base64, binascii, time, hashlib, re, copy, textwrap, logging ImportError: No module named argparse

執行以下命令:

yum install python-argparse

錯誤2

Traceback (most recent call last):
File “setup.py“, line 3, in <module>
from setuptools import setup, find_packages ImportError: No module named setuptools

安裝setuptools

wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz tar zxvf setuptools-0.6c11.tar.gz cd setuptools-0.6c11 python setup.py build python setup.py install

錯誤3

ValueError: Wrote file to /alidata/www/boke/.well-known/acme-challenge/23YlOKT25QPM0NtJL-tHkWOxEXja_aVUTAqKXwlp66g, but couldn’t download http://lirongyao.com/.well-known/acme-challenge/23YlOKT25QPM0NtJL-tHkWOxEXja_aVUTAqKXwlp66g

原因是國內DNS解析問題,還有沒有目錄沒有權限寫入等提示

完成後會生成以下幾個文件

lets-encrypt-x3-cross-signed.pem
letsencrypt-account.key
lirongyao.chained.crt
lirongyao.com.key
lirongyao.crt
lirongyao.csr

6、打開網站配置文件,修改和添加紅色部分

# vi /alidata/server/nginx/conf/vhosts/rongyao.conf
server {
        listen  443;
		ssl on;
		ssl_certificate /alidata/server/nginx/certs/lirongyao.chained.crt;
		ssl_certificate_key /alidata/server/nginx/certs/lirongyao.com.key;
		server_name lirongyao.com;
        index index.html index.htm index.php;
       root /alidata/www/site;
       ...省略部分...
}
server {
listen 80;
rewrite ^(.*) https://lirongyao.com$1 permanent;  //強制80轉向443
}

:wq!   保存
#service nginx restart   重啓NGINX服務

至此HTTPS協議配置完成。

7、每月1號定時自動續期,因爲這個證書只有90天有效期。

0 0 1 * * /alidata/server/nginx/certs/letsencrypt.sh /alidata/server/nginx/certs/letsencrypt.conf >> /alidata/log/lets-encrypt.log 2>&1

如何配置定時任務參考這篇文章《Linux定時重啓系統或服務

原創文章,轉載請註明: 轉載自榮耀博客
本文鏈接地址: 如何爲網站配置(Let’s Encrypt)HTTPS協議
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章