一、安裝Openssl
nginx有openssl 命令,沒有的自行百度,我配置的nginx是存在的所以沒查這部分
二、生成密鑰
可以在本地生成然后把文件拷貝到服務(wù)器,也可以直接在服務(wù)器指定目錄生成,我選擇的后者。
應(yīng)該是哪個目錄都可以,只要在nginx.conf文件中引入正確地址就可以
我的配置文件目錄為 /etc/nginx/nginx.conf,配置文件放在了 /etc/nginx/ssl/文件夾下
1、openssl genrsa -des3 -out *.key 2048
2、openssl req -new -key *.key -out *.csr
3、openssl rsa -in *.key -out *_nopass.key
4、openssl req -new -x509 -days 3650 -key *_nopass.key -out *.crt
(說明:*是你自己起的文件名,第一個文件會提示設(shè)個密碼,必須是4位,后面會用到這個密碼。
第二個文件需要提供一些參數(shù),像國家、省市、公司、域名等,如果不在意的話直接回車不輸入。
總共會生成四個文件。)
例如:
1、openssl genrsa -des3 -out serverSSL.key 2048
2、openssl req -new -key serverSSL.key -out serverSSL.csr
3、openssl rsa -in serverSSL.key -out serverSSL_nopass.key
4、openssl req -new -x509 -days 3650 -key serverSSL_nopass.key -out serverSSL.crt
該步驟參考:
作者:jackmanzhang
鏈接:https://www.jianshu.com/p/3c694b021536
注意:key值有的帖子寫1024,這里一定要是2048,我剛開始時寫的是1024結(jié)果報錯,大概意思是key值太低?不太懂,反正重新用2048就好了。
生成文件:
?三、配置nginx
坑一:配置完成后,輸入域名可以訪問,但是沒有css樣式,最坑的是谷歌瀏覽器居然沒有任何報錯信息,換成火狐瀏覽器后才看到下圖的報錯信息
完整 nginx.conf 配置
http{
server {
listen 443 ssl;
server_name 192.168.2.6; #這里也可以用你的域名
include mime.types; #解決坑一
#這兩行是必須的,文件就是上一步生成的文件,路徑要寫對
ssl_certificate /etc/nginx/ssl/serverSSL.crt;
ssl_certificate_key /etc/nginx/ssl/serverSSL_nopass.key;
#下面這5行注釋掉也正常,不知道什么作用
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
error_page 500 502 503 504 /50x.html;
#訪問的項(xiàng)目地址
location /{
root /var/www/html;
index index.html index.htm;
}
}
server{
listen 80;
server_name 192.168.2.6;
#瀏覽器地址輸入192.168.2.6重定向到https://192.168.2.6
rewrite ^(.*)$ https://192.168.2.6 permanent; #http轉(zhuǎn)https
}
}
配置完成后重啟nginx:
nginx -s reload
?四、后端接口也要改成https,否則可能會報以下錯誤
1、Failed to load resource: net::ERR_CONNECTION_REFUSED
2、已攔截跨源請求:同源策略禁止讀取位于 http://192.168.2.12:8090/app/getVersion 的遠(yuǎn)程資源。(原因:CORS 頭缺少 'Access-Control-Allow-Origin')。狀態(tài)碼:400。
3、已阻止載入混合活動內(nèi)容“http://192.168.2.12:8090/app/getVersion”
4、Mixed Content: The page at 'https://192.168.2.11:8080/#/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://192.168.2.12:8090/app/getVersion'. This request has been blocked; the content must be served over HTTPS.
后端接口不改好像也可以實(shí)現(xiàn),但是我沒有成功,不知道哪里的問題
五、前端設(shè)置
index.html 的head中加上
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
vue.config.js 中加上? https:true
六、訪問
一切設(shè)置好后訪問時依舊報錯:
GET https://192.168.2.12:8090/app/getVersion net::ERR_CERT_AUTHORITY_INVALID
解決方法:在network中雙擊報錯的接口,出現(xiàn)下圖2,點(diǎn)高級-繼續(xù)前往,然后返回刷新就好了。
目前只知道這樣能解決,但是不知道能不能避免第一次訪問時的這一種情況 ,后續(xù)有解決辦法再更新
文章來源:http://www.zghlxwxcb.cn/news/detail-813149.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-813149.html
到了這里,關(guān)于內(nèi)網(wǎng)環(huán)境下nginx使用自簽名ssl證書配置https請求的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!