網站配置https(騰訊雲域名操做)

咱們都知道http協議是超文本傳輸協議,早期的網站使用的都是http,可是並不安全,數據在傳輸過程當中容易被攔截篡改。因此後面有了https,也就是通過ssl加密的http協議。本文主要對網站配置https作一個總結,對https的概念不作具體介紹,想了解的能夠參考百度百科或者維基百科中的介紹。html

得到 SSL 安全證書

要想配置https,首先要獲取ssl證書。常見的有 Godaddy 、 GlobalSign等收費機構簽發的證書,固然也有 ISRG ( Internet Security Research Group )推出的免費證書==Let’s Encrypt==,不過要每三個月更新一次。當前網站用的就是Let’s Encrypt免費證書。linux

採用Let’s Encrypt證書配置https,最簡單的辦法就是Certbot,可是因爲騰訊雲的域名解析服務器有防火牆限制,致使執行./certbot-auto certonly命令的時候,一直沒辦法解析域名。nginx

無奈只好採用其它辦法。騰訊雲其實本身有封裝一套獲取Let’s Encrypt證書的方法。
具體詳見:騰訊雲DNSPod API申請Let’s Encrypt泛域名證書瀏覽器

按照步驟操做到最後一步就成功了一半了,而後就是怎麼使用這些證書。詳情能夠參考
證書安裝指引。個人網站用的是nginx作的方向代理。按照指導配置以下:安全

server {
        listen 80;
        server_name  www.iwillhaveacatoneday.cn;
        rewrite ^(.*) https://$server_name$request_uri permanent;   
    }

server {
        listen 443;
        server_name www.iwillhaveacatoneday.cn; #填寫綁定證書的域名
        ssl on;
        ssl_certificate 1_iwillhaveacatoneday.cn_bundle.crt;
        ssl_certificate_key 2_iwillhaveacatoneday.cn.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協議配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置
        ssl_prefer_server_ciphers on;
        location ^~ /static/ {
              root /usr/share/nginx/html;
         }
         location / {
             proxy_pass http://backend$request_uri;
             proxy_set_header  Host $host:$server_port;
             proxy_set_header  X-Real-IP  $remote_addr;
             client_max_body_size 10m;
        }
    }

艱難踩坑

一波三折,好不容易獲取證書,配置完nginx.conf。在重啓nginx後,又遇到問題服務器

Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

根據提示咱們執行==systemctl status nginx.service==(systemctl命令),從打印出來的日誌咱們發現了錯誤session

nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)

看來是nginx.pid文件丟失致使沒法停掉nginx進程。
解決方案詳見 Nginx 重啓時丟失nginx.pid文件解決方法
咱們直接簡單粗暴用==pkill -9 nginx==停掉了Nginx,而後重啓,順利啓動。ssh

激動地在瀏覽器輸入域名,回車,結果顯示==拒絕了咱們的鏈接請求==。WTF???明明我均可以經過ssh鏈接到服務器,拒絕鏈接請求什麼鬼。不過仔細一想多是是由於裝了防火牆,把443端口給禁了,致使HTTPS服務無法訪問。tcp

由於騰訊雲的安全組不是很好用,常常開發了端口結果沒生效,當時就把安全組的端口所有暴露了,而後本身裝了firewalld。因此只須要把firewalld的443端口開發就好網站

firewall-cmd --list-ports    #查看防火牆開放的端口
firewall-cmd --zone=public --add-port=443/tcp --permanent    #防火牆添加443端口
firewall-cmd --reload    #重啓防火牆

而後重啓Nginx,刷新頁面,結果又報錯了(活着好難。。。)

502 bad gateway

這回nginx應該沒啥問題,估計是網站掛了,因而跑去看日誌,果真發現一堆異常,程序貌似沒有成功啓動。爲了確認,看下有沒有網站的進程

ps -ef|grep solo

果真沒有進程。重啓網站後,再刷新,終於看到熟悉的首頁,https成功配置完成。

閱讀原文

相關文章
相關標籤/搜索