【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:。

試了好久,然后我看沒有特別有效的解決辦法,於是我放棄了。 

 


然后,我又試了手動的方式,結果給了我一個蜜汁challenge,看了官網是有這方面的解釋的。

 

 

所以我的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天,所以需要更新證書的!!!。

 


 

update: 更新證書

 

因為才剛剛上了證書,這么短時間去renew肯定是不行的。所以實操還是不知道效果。這是參考網上的。

1、手動更新

./certbot-auto  renew   -v

 

2、自動更新

./certbot-auto  renew  --quiet  --no-self-upgrade

 

為了避免每90天上來更新一次證書。 我寫了個shell腳本執行第二句話,用corntab寫了個定時任務。

$touch batch.sh $vim batch.sh

執行一下腳本會發現權限不夠,然后如下

$chmod 700 batch.sh $./batch.sh

就可以運行了。

 

接下來接入定時任務

$crontab -e

這里是定時的每周一的一點執行這個腳本

0 1 * * 1 ./bash.sh

保存以后再執行下面這條命令

$service crond restart

 

查看執行日志是這樣的

可以看到我寫的每分鍾執行的一個測試文件

 

 


 

 

雖然又是一次很辛酸的歷程,但是知道了nginx的配置,還自己申請了一下。總的還是蠻有(nan)趣(guo)的。

菜雞又學了一些東西,收獲很多。qwq希望對你們有幫助。

 


免責聲明!

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



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