搭建Nginx Https

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容