admin

[運營交流] centos7下Nginx部署letsencrypt證書,免費https化

在這個到處都https的情況下,加一個還是挺好的。廢話不多說,開始搞吧!


初始化服務器!


安裝nginx

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum install -y nginx


反代一個易讀程序,并且添加一個 /.well-known/ 的本地設置

server

{

    listen 80;

    server_name tbfensi.com www.tbfensi.com m.tbfensi.com;

    root /www/wwwroot/tbfensi.com;


    location / 

    {

        proxy_pass http://192.187.xxx.xxx;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-For $remote_addr;

        proxy_cache cache_one;

        proxy_cache_key $host$request_uri$is_args$args;

        proxy_cache_valid 200 304 301 302 1h;

        add_header X-Cache $upstream_cache_status;

        

        expires 12h;

    }


    #禁止訪問的文件或目錄

    location ~ ^/(\.user.ini|\.htaccess|\.git|\.project|LICENSE|README.md)

    {

        return 404;

    }

    

    location ^~ /.well-known/ {

           root /www/wwwroot/tbfensi.com;

    }

    

    access_log  /www/wwwlogs/tbfensi.com.log;

}


開放80和443端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --zone=public --add-port=443/tcp --permanent

firewall-cmd --reload

安裝letsencrypt

yum -y install git

git clone https://github.com/letsencrypt/letsencrypt.git


安裝證書

./letsencrypt-auto certonly --webroot --webroot-path /www/wwwroot/tbfensi.com  -d tbfensi.com  -d www.tbfensi.com -d m.tbfensi.com -m [email protected]


說明:

--webroot-path 設置根目錄,腳本會在這個目錄下生成驗證臨時文件夾.well-known,下面有驗證文件

-d 是域名,包括各種a記錄,需要認證的,我們這里是www,m和@

-m 郵箱,填自己的郵箱就可以了。


安裝證書的時候會出現兩個問答,第一個A,第二個N就行了。具體你可以看英文


然后出現下面的提示就成功了!

IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at:

   /etc/letsencrypt/live/tbfensi.com/fullchain.pem

   Your key file has been saved at:

   /etc/letsencrypt/live/tbfensi.com/privkey.pem

   Your cert will expire on 2018-03-29. To obtain a new or tweaked

   version of this certificate in the future, simply run

   letsencrypt-auto again. To non-interactively renew *all* of your

   certificates, run "letsencrypt-auto renew"

 - If you like Certbot, please consider supporting our work by:


生成一個dhparam.pem文件,時間有點長,2048位的

openssl dhparam -out dhparam.pem 2048

到這里證書就做完了,下面我們部署到nginx里,修改配置文件。

#80端口301到https

server {

listen 80;

server_name tbfensi.com www.tbfensi.com m.tbfensi.com;

return 301 https://$host$request_uri;

}


server {

listen 443 ssl http2;

server_name tbfensi.com www.tbfensi.com m.tbfensi.com;

    location / 

    {

        proxy_pass http://192.187.xxx.xxx;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-For $remote_addr;

        proxy_cache cache_one;

        proxy_cache_key $host$request_uri$is_args$args;

        proxy_cache_valid 200 304 301 302 1h;

        add_header X-Cache $upstream_cache_status;

        

        expires 12h;

    }


    #禁止訪問的文件或目錄

    location ~ ^/(\.user.ini|\.htaccess|\.git|\.project|LICENSE|README.md)

    {

        return 404;

    }


    ssl                     on;

    #ssl_prefer_server_ciphers on;

    #ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;

    #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;

    #ssl_prefer_server_ciphers on;

    ssl_session_cache       shared:TLSSL:16m;

    ssl_session_timeout     10m;

    ssl_certificate         /etc/letsencrypt/live/tbfensi.com/fullchain.pem;

    ssl_certificate_key     /etc/letsencrypt/live/tbfensi.com/privkey.pem;

    ssl_dhparam             /etc/ssl/certs/dhparam.pem;


    #add_header X-Frame-Options SAMEORIGIN;

    add_header Strict-Transport-Security max-age=16000000;

}


重啟nginx,再打開網站應該是https啦。

systemctl restart nginx.service

恭喜!!!


另外,letsencrypt證書的有效期是3個月,做一個自動更新的腳本就可以不用管了


還有很重要的一步,如果沒有顯示綠色小標的話,應該是引用了非https資源,把這些資源都變成https就可以了



#1樓
發帖時間:2017-12-30   |   查看數:0   |   回復數:0
游客組
?