Let's Encrypt,免費好用的 HTTPS 證書


https://imququ.com/post/letsencrypt-certificate.html

1、

openssl genrsa 4096 > account.key

2、私鑰

openssl genrsa 4096 > domain.key

3、csr文件生成

DNS域名,可以多個,都要可以訪問,注意用到了上面生成的文件

openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:yoursite.com,DNS:www.yoursite.com")) > domain.csr

 

其中,openssl.cnf文件位置,可以查找:

find / -name 'openssl.cnf' 

4.1、驗證准備

目錄

mkdir ~/www/challenges/

訪問引導,注意目錄,不要忘記reload生效

server {
listen 80; server_name www.yoursite.com yoursite.com;    #驗證訪問 location
^~ /.well-known/acme-challenge/ { alias /home/xxx/www/challenges/; try_files $uri =404; } location / {
     #其他訪問轉向https rewrite
^/(.*)$ https://yoursite.com/$1 permanent; } }

4.2 腳本文件

https://github.com/diafygi/acme-tiny  需要及時更新

5 驗證

注意用到了上面生成的兩個文件,並提供驗證目錄

python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir ~/www/challenges/ > ./signed.crt

通過驗證后,當前目錄下就會生成一個 signed.crt 證書文件。

6 合並證書

wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem

7開啟(nginx配置,其他和http配置一樣)

server {
    server_name YOUR_DOMAINNAME_HERE;
    listen 443;
    ssl on;
    ssl_certificate     ~/www/ssl/chained.pem;
    ssl_certificate_key ~/www/ssl/domain.key;
}

 

6自動更新腳本

Let's Encrypt 簽發的證書只有 90 天有效期,用腳本定期更新。

腳本內容和上面步驟一樣,驗證並獲得證書,合並證書,最后重載nginx,注意目錄

#!/bin/bash

cd /home/xxx/www/ssl/
python acme_tiny.py --account-key account.key --csr domain.csr --acme-dir /home/xxx/www/challenges/ > signed.crt || exit
wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem
service nginx reload

7定期執行腳本

可執行權限

chmod a+x renew_cert.sh

定期執行(每月一次)

0 0 1 * * /home/xxx/shell/renew_cert.sh >/dev/null 2>&1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM