certbot在Centos7上配置合法簽名證書,實現nginx的https訪問
公司因之前使用的openssh創建的自簽名證書,有一個弊端,就是在某些客戶端上不能使用此證書,無法使用https連接,所以,研究了一下certbot 做簽名證書!
certbot的官網地址:
https://certbot.eff.org/
1、制作證書前的準備:
你需要有一個公網地址,並綁定合法域名
2、開始制作:
(1)、下載Certbot客戶端:
wget https://dl.eff.org/certbot-auto
(2)、下載後,進入下載的目錄,添加執行權限
chmod a+x ./certbot-auto
3、介紹一下certbot的兩種工作方式:
(1)、 standalone 方式: certbot 會自己運行一個 web server 來進行驗證。如果我們自己的服務器上已經有 web server 正在運行 (比如 Nginx 或 Apache ),用 standalone 方式的話需要先關掉它,以免沖突。
(2)、webroot 方式: certbot 會利用既有的 web server,在其 web root目錄下創建隱藏文件, Let’s Encrypt 服務端會通過域名來訪問這些隱藏文件,以確認你的確擁有對應域名的控制權。
4、我使用的是webroot方式,自己搭建一個nginx服務器,配置location字段,如下:
(1)、使用rpm安裝nginx
sudo yum -y install nginx
(2)、編輯nginx的配置文件,修改以下參數:
在http 段範圍
(3)、修改完nginx配置文件後,使用nginx -t命令,測試配置文件語法:
sudo nginx -t #返回OK 表示配置文件修改成功
(4)、啟動nginx服務
sudo nginx netstat -anplut | grep 80 #檢測80端口,是否在監聽
(5)、使用certbot-auto命令,生成證書
./certbot-auto certonly --webroot -w /usr/share/nginx/html/ -d [填寫合法域名的地址] #-w 表示 nginx中指定的root 網站根目錄的路徑
(6)、上述命令執行成功後,返回以下界面:
從上圖中可以看到,會在/etc/letsencrypt/live下 生成你的域名的文件夾,並且目錄下會有此文件:
[centos@shuzhiyuan1 ~]$ tree /etc/letsencrypt/ /etc/letsencrypt/ ├── accounts │?? └── acme-v01.api.letsencrypt.org [error opening dir] ├── archive [error opening dir] ├── csr │?? └── 0000_csr-certbot.pem ├── keys [error opening dir] ├── live │?? └── kafeimao.com (別名,最終,看自己域名) │?? ├── cert.pem -> ../../archive/kafeimao.com/cert1.pem │?? ├── chain.pem -> ../../archive/kafeimao.com/chain1.pem │?? ├── fullchain.pem -> ../../archive/kafeimao.com/fullchain1.pem │?? ├── privkey.pem -> ../../archive/kafeimao.com/privkey1.pem │?? └── README ├── options-ssl-apache.conf ├── options-ssl-nginx.conf ├── renewal │?? └── kafeimao.com.conf ├── renewal-hooks │?? ├── deploy │?? ├── post │?? └── pre └── ssl-dhparams.pem 12 directories, 10 files
nginx的https 訪問,需要用到 上述兩個 pem的證書文件:
5、測試配置nginx支持https訪問,測試 https的證書是否可用:
server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name kafeimao.com; ssl on; ssl_certificate "/etc/letsencrypt/live/kafeimao.com/fullchain.pem"; ssl_certificate_key "/etc/letsencrypt/live/kafeimao.com/privkey.pem"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { root /usr/share/nginx/html/kafeimao.com; index index.html; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
6、重載nginx服務;
sudo nginx -s reload
7、訪問域名,測試https連接:
8、發現證書是可用的,值得祝賀,你已經成功了! 非常簡單
總結:
certbot默認註冊的證書 ,有效期是90天, 需要更新證書
使用命令進行更新:
(1)、手動更新
./certbot-auto renew -v
(2)、自動更新
./certbot-auto renew --quiet --no-self-upgrade
在註冊證書時,如果遇到此錯誤:
這個錯誤,跟命令中使用了webroot方式,(官網也推薦這種方式)所以,nginx裏要配置正確的location字段,就是server中的配置;
此文僅做個筆記,沒有什麽深奧的東西,咖菲貓一直在前進;
certbot在Centos7上配置合法簽名證書,實現nginx的https訪問