此文記錄我為搭建https的流程,過程艱辛,最后簡單粗暴的記一下,免得忘了,也供各位參考。其中每個(gè)步驟的細(xì)節(jié)再自行在網(wǎng)上搜索都有更詳細(xì)的內(nèi)容。
環(huán)境:ubuntu 16.04
Https生成證書后需要CA認(rèn)證。未認(rèn)證的搭建好后,瀏覽器會首先出現(xiàn)此網(wǎng)站不安全提示,選擇繼續(xù)訪問后才可訪問。https://github.com/certbot/certbot提供了免費(fèi)認(rèn)證功能,有效期90天。但之后重新生成證書就可以繼續(xù)使用。
準(zhǔn)備好工具:apt-get install git ,apt-get install nginx
一、未認(rèn)證的證書
1、安裝openssl?
????apt-get install git openssl
2、生成證書
在/etc/nginx下新建了一個(gè)ssl文件夾用于保存證書等文件:
? ? cd /etc/nginx
? ? mkdir ssl
? ? cd ssl
? ??1.創(chuàng)建服務(wù)器證書密鑰文件 server.key:
????openssl genrsa -des3 -out server.key 1024
????輸入密碼,確認(rèn)密碼,自己隨便定義,但是要記住,后面會用到。
????2.創(chuàng)建服務(wù)器證書的申請文件 server.csr
????openssl req -new -key server.key -out server.csr
????輸出內(nèi)容為:
????Enter pass phrase for root.key: ← 輸入前面創(chuàng)建的密碼?
????Country Name (2 letter code) [AU]:CN ← 國家代號,中國輸入CN?
????State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音?
????Locality Name (eg, city) []:BeiJing ← 市的全名,拼音?
????Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名?
????Organizational Unit Name (eg, section) []: ← 可以不輸入?
????Common Name (eg, YOUR name) []: ← 此時(shí)不輸入?
????Email Address []:admin@mycompany.com ← 電子郵箱,可隨意填
????Please enter the following ‘extra’ attributes?
????to be sent with your certificate request?
????A challenge password []: ← 可以不輸入?
????An optional company name []: ← 可以不輸入
????4.備份一份服務(wù)器密鑰文件
????cp server.key server.key.org
????5.去除文件口令
????openssl rsa -in server.key.org -out server.key
????6.生成證書文件server.crt
????openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
3、配置nginx
????最新的nginx,/etc/nginx.conf引入了/etc/nginx/sites-enabled下的默認(rèn)配置,我只是測試一下,所以直接修改默認(rèn)配置了
? ? cd /etc/nginx
? ? vim sites-enabled/default

cd ..
nginx -s reload
最后用瀏覽器直接訪問就可以了,想讓http自動跳轉(zhuǎn)到https在nginx加要給過濾就行,最后補(bǔ)上。
二、使用免費(fèi)認(rèn)證證書
首先準(zhǔn)備自己的域名假設(shè)是www.test.com
1、安裝certbot:
cd /opt
git clone https://github.com/certbot/certbot.git
2、解決./well-known/acme-challenge
使用webroot方式生成證書的時(shí)候,會自動在服務(wù)的根目錄下生成一個(gè)臨時(shí)文件然后訪問驗(yàn)證,所以在nginx先加入配置
cd /etc/nginx
vim /etc/nginx/sites-enabled/default

在默認(rèn)配置的location前面加入這兩個(gè)過濾
nginx -s reload
3、生成證書文件
cd /opt/certbot
./certbot-auto certonly --email youremail@xxx.com --agree-tos --no-eff-email --webroot -w /var/www/html -d www.test.com
上面命令中,自行用你的郵箱替換youremail@xxx.com,你的域名替換www.test.com。命令后面可以繼續(xù)-d 域名,以配置多個(gè)域名。
期間會有問yes/no等的,y就行。生成成功后會告訴你生成的證書在 /etc/letsencrypt/live/www.test.com/下。
4、配置nginx
同樣直接修改默認(rèn)的配置文件,修改成如下

涂白的地方就是www.test.com,也就是你的域名。上面我多加了一個(gè)80端口的server,就是用于過濾http直接跳轉(zhuǎn)到https用的。
nginx -s reload
最后用瀏覽器測試一下
參考:
搭建無認(rèn)證https https://www.cnblogs.com/jingxiaoniu/p/6745254.html
解決生成證書時(shí)訪問臨時(shí)文件而不得的問題 https://segmentfault.com/a/1190000005797776
還是letsencrypt時(shí)的用法 https://blog.csdn.net/rickiyeat/article/details/53783605
http跳轉(zhuǎn)到https的配置 https://www.cnblogs.com/kevingrace/p/6187072.html