免費生成https證書以及配置
阿新 • • 發佈:2017-06-03
usr 幫我 有效期 note ssl 查詢 att acm sha http升級到https需要在nginx的配置中加入證書信息,查詢資料後確定生成證書兩種方案
openssl rsa -passin pass:x -in ssl.pass.key -out ssl.key
//刪除中間文件
rm ssl.pass.key
接著,利用已經生成的 ssl.key 文件,進一步生成 ssl.csr 文件:
openssl req -new -key ssl.key -out ssl.csr
執行此行命令會提示輸入密碼,按回車即可,因為前面我們在生成 ssl.key 時選擇了密碼留空。
最後我們利用前面生成的 ssl.key 和 ssl.csr 文件來生成 ssl.crt 文件,也就是自簽名的 SSL 證書文件:
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
這一步之後,我們得到一個自簽名的 SSL 證書文件 ssl.crt,有效期為 365 天。此時,ssl.csr 文件也已經不再被需要,可以刪除掉了:
rm ssl.csr
參考地址:
https://hinine.com/create-and-deploy-a-self-signed-ssl-certificate-to-nginx/
Certbot 簡介
Certbot 是Let‘s Encrypt官方推薦的獲取證書的客戶端,可以幫我們獲取免費的Let‘s Encrypt 證書。
1. 下載 certbot
最好是根據官方網址來處理:
https://certbot.eff.org/
2. 生成免費證書
官方文檔有比較詳細的說明,根據自己的情況來選擇
https://certbot.eff.org/docs/using.html
註意:官方限制了每周的申請次數,如果你進行開發測試,生成證書的時候加上 --staging參數,這樣就不必太擔心數量的限制了
下面介紹幾種方法
無論哪一種方法,實質都是驗證你是不是擁有這個域名,只不過實現的途徑不同
1>webroot方法,此方法會在你配置的服務器站點目錄下創建 .well-known 文件夾,這個文件夾裏面包含了一些驗證文件,certbot 會通過訪問 http://example.com/.well-known/acme-challenge 來驗證你的域名是否綁定的這個服務器
如果你自己沒有創建相應的站點也可以自己加入一個比較通用的配置
location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /usr/share/nginx/html; } location = /.well-known/acme-challenge/ { return 404; }
certbot certonly --webroot -w 網站根目錄 -d example.com -w 網站根目錄 -d www.example.com
2>standalone方法,如果你不想使用你自己的服務器,這個方法是個選擇,但是需要註意要關閉相應的端口或者是80或者443(以你自己選擇的方式決定)
使用80端口: certbot certonly --standalone --preferred-challenges http -d example.com
使用443端口: certbot certonly --standalone --preferred-challenges tls-sni -d example.com
3>manual方法,如果你想在任意的linux主機下生成證書,那麽這種方法可能是一個選擇,但是要註意的是驗證過程中會生成一個字符串,需要你將這個隨機的字符串添加到你dns服務器才可以完成驗證操作.
certbot certonly --manual --preferred-challenges dns -d archerwong.cn
3.刪除證書,如果你生成的時候添加了 --stagin參數,下面的命令也要添加
certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
certbot delete --cert-name example.com
4.證書更新
sudo certbot renew --dry-run
5.豐富的參數選擇
以上的各種命令其實都是可以加入很多參數,最好是查找下官方文檔
https://certbot.eff.org/docs/using.html
當然官方提供了很多種生成證書的方法,你可以根據你自己的實際情況進行選擇
證書生成完畢後,我們可以在 /etc/letsencrypt/live/ 目錄下看到對應域名的文件夾,裏面存放了指向證書的一些快捷方式。
生成證書後,配置 Nginx
打開 nginx server 配置文件加入如下設置:
server {
listen 443 ssl on;
ssl_certificate /etc/letsencrypt/live/網站域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/網站域名/privkey.pem;
## 其他配置
}
強制跳轉 https
https 默認是監聽 443 端口的,沒開啟 https 訪問的話一般默認是 80 端口。如果你確定網站 80 端口上的站點都支持 https 的話加入下面的配件可以自動重定向到 https
server {
listen 80;
server_name your.domain.com;
return 301 https://$server_name$request_uri;
}
參考地址:
https://zhuanlan.zhihu.com/p/21286171
https://zhuanlan.zhihu.com/p/24996258
第一種:自簽名證書,然後開啟 CloudFlare 的 CDN 服務
//確定是否安裝openssl which openssl //如果沒有安裝,通過apt-get或者yum等方式安裝即可 sudo apt-get install openssl //生成一個名為“ssl.key”的 RSA key文件:執行結果:生成ssl.pass.key 和 ssl.key openssl genrsa -des3 -passout pass:x -out ssl.pass.key 2048第二種:借助於Let‘s Encrypt
Let‘s Encrypt 簡介 如果要啟用HTTPS,我們就需要從證書授權機構(以下簡稱CA) 處獲取一個證書,Let‘s Encrypt 就是一個 CA。我們可以從 Let‘s Encrypt 獲得網站域名的免費的證書。免費生成https證書以及配置