【linux】centos6/7 + nginx 利用certbot 申請https證書
沒錯我又踩坑了。昨晚上搞到十二點半才成功申請。鬼知道OJ服務器是個什麽渣渣。
早上才算正式弄好,中間也學了不少東西,記錄一下。這次是http轉https,所以默認的還是只有80端口。
請務必確保自己的80端口是開的。。否則會GG。
首先貼一下cerbot的網址 https://certbot.eff.org/,你可以去裏面選擇你的環境然後會有教程。
1、下載Certbot,並且添加權限
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
2、關閉nginx服務
sudo service nginx stop
3、使用certbot-auto,生成證書
先說一下自己的坑吧,這裏著實坑死我了。
不想看的可以跳過這一段!!!因為很多廢話!!
我先百度了一下,是有這樣的,
./certbot-auto certonly --standalone --email 你的郵箱 -- agree-tos -d 你的域名
但是我們這個oj的域名有點奇怪,估計是沒有,然後會報 certbot: error: unrecognized arguments:。
試了好久,然後我看沒有特別有效的解決辦法,於是我放棄了。
所以我的80端口被占用了,於是我,查看80端口
lsof -i:80
殺進程。
kill -9 進程id
md殺出問題了。我把數據庫殺掉了,結果mysql掛了。
賊慌,還好重啟了一下,就好了。
於是我這個也放棄了QAQ。
真的是血淚史,哭唧唧。
最後嘗試了一次,這種方式是成功的。
./certbot-auto certonly --webroot -w 你的網站根目錄 -d 你的域名
你進入要配置的域名的nginx的conf裏面,紅色框是根目錄,藍色框就是域名(之前這裏是只有80的,我這個截圖是修改之後的)
4、查看letsencrypt
這一步成功後就會生成這個目錄 /etc/letsencrypt/live/你的域名
這個底下會有這些東西,紅框的兩個是我們要配置進conf的。
5、配置conf
請在sever下加入這三行
ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/你的域名/chain.pem;
並且把原來server下的listen 80 去掉改成
listen 443 ssl;
ssl on;
這裏慎重提醒!!!
千萬不要加listen [::]:443 default_server ipv6only=on,我昨天一直沒成功,是因為加了這句話,我也不知道為什麽。花花幫我去掉後就可以了。
6、測試並重定向
打開nginx服務
sudo service nginx start
這裏先建議測試一下https://你的域名,看是否可以訪問,不能再去找原因。我比較順利這裏。就沒有問題。qwq
然後測試成功後,做一個80端口重定向,紅框部分為你的域名。
7、重啟nginx服務器
上面改完之後
sudo service nginx reload
就可以了。
不過!!!!我在這裏是出了問題的。證書還是不行,原因是我沒有給 /etc/letsencrypt/live/這個裏面權限,導致不能訪問,所以會失敗。
這個就用chmod a+x再給一次權限啦,最好是整個目錄都給哦。
後面再把更新證書寫一下。有效期是90天,所以需要更新證書的!!!。
雖然又是一次很辛酸的歷程,但是知道了nginx的配置,還自己申請了一下。總的還是蠻有(nan)趣(guo)的。
菜雞又學了一些東西,收獲很多。qwq希望對你們有幫助。
【linux】centos6/7 + nginx 利用certbot 申請https證書