Laravel 配置 https

克隆腳本

sudo git clone https://github.com/diafygi/acme-tiny.git  
cd acme-tiny

創(chuàng)建Let's Encrypt私鑰

openssl genrsa 4096 > account.key

創(chuàng)建CSR(Certificate Signing Request,證書簽名請(qǐng)求) 文件

openssl genrsa 4096 > domain.key     
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 文件的位置可能會(huì)因?yàn)閘inux版本的不同而有變

證明你擁有該域名

acme-tiny腳本會(huì)生成驗(yàn)證文件并寫入到你指定的目錄下,然后通過(guò) ".well-known/acme-challenge/" 這個(gè)URL來(lái)訪問(wèn)到驗(yàn)證文件. 注意: Let's Encrypt 會(huì)對(duì)你的服務(wù)器做一次http請(qǐng)求來(lái)進(jìn)行驗(yàn)證,因此你需要保證80端口能夠訪問(wèn).

手動(dòng)生成challenges目錄,用來(lái)存放驗(yàn)證文件(路徑可以根據(jù)需要修改)
mkdir -p /var/www/challenges
配置nignx的80端口
server {

        listen 80;
        server_name yoursite.com www.yoursite.com;
        # 讓 Let's Encrypt 成功訪問(wèn)到驗(yàn)證文件不受 301 影響
        if ( $request_uri !~ "/.well-known/acme-challenge/*" ) { 
                  # 注意進(jìn)行301重定向到https,否則通過(guò)http仍能訪問(wèn)你的站點(diǎn)
                  return 301 https://yoursite.com$request_uri; 
        }

        location /.well-known/acme-challenge/ {
            alias /var/www/challenges/;
            try_files $uri =404;
        }

        #...你的其他配置
    }

重要-重啟nginx

service nginx restart

獲取簽名證書

sudo chmod +x acme_tiny.py  
sudo python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir /var/www/challenges/ > ./signed.crt

安裝證書

wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem  
    cat www.crt intermediate.pem > www.pem
server {
        listen 443;
        server_name yoursite.com www.yoursite.com;

        ssl on;
        ssl_certificate /path/to/chained.pem;
        ssl_certificate_key /path/to/domain.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
        ssl_session_cache shared:SSL:50m;
        ssl_prefer_server_ciphers on;

        #...你的其他配置
    }

證書自動(dòng)更新定時(shí)任務(wù)

恭喜!你的網(wǎng)站已經(jīng)使用上了HTTPS。 但Let's Encrypt 證書有效期只有90天, 所以需要定期更新?,F(xiàn)在只需要寫一個(gè)更新腳本并把它放到定時(shí)任務(wù)中即可。

腳本內(nèi)容:

#!/usr/bin/sh

    python /path/to/acme_tiny.py --account-key /path/to/account.key --csr /path/to/domain.csr --acme-dir /var/www/challenges/ > /tmp/signed.crt || exit

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

    cat /tmp/signed.crt intermediate.pem > /path/to/chained.pem

    service nginx reload

定時(shí)任務(wù)可以設(shè)置為每個(gè)月執(zhí)行一次:

0 0 1 * * sudo bash /path/to/renew_cert.sh 2>> /var/log/acme_tiny.log
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容