Certbot
Https生成證書(shū)后需要CA認(rèn)證。未認(rèn)證的搭建好后,瀏覽器會(huì)首先出現(xiàn)此網(wǎng)站不安全提示,選擇繼續(xù)訪問(wèn)后才可訪問(wèn)。https://github.com/certbot/certbot 提供了免費(fèi)認(rèn)證功能,有效期90天。但之后重新生成證書(shū)就可以繼續(xù)使用。
未認(rèn)證的證書(shū)
一、提前確保openssl包存在
二、生成證書(shū)
2.1、在/etc/nginx下新建了一個(gè)ssl文件夾用于保存證書(shū)等文件
#????cd /etc/nginx
#????mkdir ssl
#????cd ssl???
2.2、創(chuàng)建服務(wù)器證書(shū)密鑰文件 server.key
#????openssl genrsa -des3 -out server.key 1024
### 輸入密碼,確認(rèn)密碼,自己隨便定義,但是要記住,后面會(huì)用到。??
2.3、創(chuàng)建服務(wù)器證書(shū)的申請(qǐng)文件 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 ← 國(guó)家代號(hào),中國(guó)輸入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 []: ← 可以不輸入
2.4、備份一份服務(wù)器密鑰文件
#????cp server.key?server.key.org
2.5、去除文件口令
#????openssl rsa -in?server.key.org?-out server.key
2.6、生成證書(shū)文件server.crt
#????openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
三、配置nginx 并重啟

使用免費(fèi)認(rèn)證證書(shū)
一、首先準(zhǔn)備自己的域名假設(shè)是 www.test.com
二、安裝certbot
#????cd /opt
#????git clone https://github.com/certbot/certbot.git
三、解決./well-known/acme-challenge
3.1、使用webroot方式生成證書(shū)的時(shí)候,會(huì)自動(dòng)在服務(wù)的根目錄下生成一個(gè)臨時(shí)文件然后訪問(wèn)驗(yàn)證,所以在nginx先加入配置 并重啟

#????cd /etc/nginx
#????vim /etc/nginx/sites-enabled/default
?### 在默認(rèn)配置的location前面加入這兩個(gè)過(guò)濾??
四、生成證書(shū)文件
#????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è)域名。??
?### 期間會(huì)有問(wèn)yes/no等的,y就行。生成成功后會(huì)告訴你生成的證書(shū)在 /etc/letsencrypt/live/www.test.com/下。??
五、配置nginx 并重啟

涂白的地方就是 www.test.com,也就是你的域名。上面我多加了一個(gè)80端口的server,就是用于過(guò)濾http直接跳轉(zhuǎn)到https用的。
我的虛擬機(jī)簡(jiǎn)約配置【未認(rèn)證的證書(shū)】(80/433端口均可訪問(wèn))

server {
? ? ? ? ? ? listen 80;
? ? ? ? ? ? ?# 比起默認(rèn)的80 使用了443 默認(rèn) 是ssl方式? 多出default之后的ssl
? ? ? ? ? ? # default 可省略
? ? ? ? ? ? ?listen? 443 default ssl; #監(jiān)聽(tīng)端口? ? ? ? ? ? ?
? ? ? ? ? ? ?# ssl on; # 開(kāi)啟? 如果把ssl on;這行去掉,ssl寫(xiě)在443端口后面。這樣http和https的鏈接都可以用
? ? ? ? ? ? ssl_certificate? ? ? ? ?/etc/nginx/ssl_cert/vm.self.com.crt; # 證書(shū)(公鑰.發(fā)送到客戶端的)
? ? ? ? ? ? ssl_certificate_key? ? ?/etc/nginx/ssl_cert/vm.self.com.key; # 私鑰
? ? ? ? ? ? ssl_session_timeout? ? ?5m; # 會(huì)話超時(shí)時(shí)間
? ? ? ? ? ? ssl_ciphers? ? ?ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 加密算法
? ? ? ? ? ? ssl_protocols? ?TLSv1 TLSv1.1 TLSv1.2; # SSL協(xié)議
? ? ? ? ? ? ssl_prefer_server_ciphers on;
? ? ? ? ? ? ?
? ? ? ? ? ? ?server_name? vm.self.com; # 綁定域名
? ? ? ? ? ? ?
? ? ? ? ? ? ?error_log? /etc/nginx/logs/443-error.log notice;
? ? ? ? ? ? access_log? /etc/nginx/logs/443-access.log main;
? ? ? ? ? ? ?
? ? ? ? ? ? ?location / {
? ? ? ? ? ? ? ? ? ? ? ? ? proxy_redirect off; # 禁止跳轉(zhuǎn)
? ? ? ? ? ? ? ? ? ? ? ? ? proxy_pass http://vm.self.com:8001; # 代理
?? ? ? ? ? ? }
}
錯(cuò)誤日志【no "ssl_certificate" is defined】
### 如果錯(cuò)誤日志出現(xiàn)服務(wù)器中沒(méi)有定義ssl證書(shū)參數(shù)【no "ssl_certificate" is defined】,建議查看下自己的NGINX是否真的重啟了,我遇到的問(wèn)題是并沒(méi)有真正重啟,nginx -s reload 命令并沒(méi)有生效導(dǎo)致參數(shù)沒(méi)有定義錯(cuò)誤


??#????netstat -tpln |grep 80 ???????????????? ### 查看80端口是否存在
#????netstat -tpln |grep 443? ? ? ? ? ? ???? ### 查看80端口是否存在
#????nginx -s stop? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ### 若沒(méi)有443端口存在,則關(guān)閉NGINX
#? ? nginx?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ### 重新啟動(dòng)NGINX重試
Linux防火墻如果已開(kāi)啟,需確保打開(kāi)【443/80】等端口,未開(kāi)啟防火墻無(wú)需配置端口開(kāi)放
centos7防火墻常用操作 :http://www.itdecent.cn/p/e29add2c7a88
參考
搭建無(wú)認(rèn)證 httpshttps://www.cnblogs.com/jingxiaoniu/p/6745254.html
解決生成證書(shū)時(shí)訪問(wèn)臨時(shí)文件而不得的問(wèn)題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