1. 程式人生 > >certbot在Centos7上配置合法簽名證書,實現nginx的https訪問

certbot在Centos7上配置合法簽名證書,實現nginx的https訪問

certbot合法簽名證書 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訪問