您好,登錄后才能下訂單哦!
一、為nginx配置https并自簽名證書
1、制作CA證書
ca.key CA私鑰:
openssl genrsa -des3 -out ca.key 2048
制作解密后的CA私鑰(一般無此必要):
openssl rsa -in ca.key -out ca_decrypted.key
ca.crt CA根證書(公鑰):
openssl req -new -x509 -days 7305 -key ca.key -out ca.crt
2、制作生成網站的證書并用CA簽名認證
在這里,假設網站域名為blog.creke.net
生成blog.creke.net證書私鑰:
openssl genrsa -des3 -out blog.creke.net.pem 2048
制作解密后的blog.creke.net證書私鑰(注意:nginx配置中,nginx支持的是解密后的格式):
openssl rsa -in blog.creke.net.pem -out blog.creke.net.key
生成簽名請求:
openssl req -new -key blog.creke.net.pem -out blog.creke.net.csr
在common name中填入網站域名,如blog.creke.net即可生成該站點的證書,同時*也可以使用泛域名如.creke.net來生成所有二級域名可用的網站證書。
用CA進行簽名:
openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in blog.creke.net.csr -out blog.creke.net.crt
其中,policy參數允許簽名的CA和網站證書可以有不同的國家、地名等信息,days參數則是簽名時限。
如果在執行簽名命令時,出現“I am unable to access the ../../CA/newcerts directory”
修改/etc/pki/tls/openssl.cnf中“dir = ./CA”
然后:
mkdir -p CA/newcerts
touch CA/index.txt
touch CA/serial
echo "01" > CA/serial
再重新執行簽名命令。
最后,把ca.crt的內容粘貼到blog.creke.net.crt后面。這個比較重要!**因為不這樣做,可能會有某些瀏覽器不支持。
好了,現在https需要用到的網站私鑰blog.creke.net.key和網站證書blog.creke.net.crt都準備完畢。接下來開始配置服務端。
二、配置nginx
server {
listen 443 ssl;
server_name blog.creke.net;
keepalive_timeout 70;
ssl_certificate blog.creke.net.crt; //網站證書存放的路徑
ssl_certificate_key blog.creke.net.key; //網站私鑰存放的路徑
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
...
}
三、檢測配置和重新加載nginx配置
檢測配置:
nginx -t
重新加載:
nginx -s reload
四、QA
有時候,會發現,在phpMyAdmin等程序登入后會錯誤地跳轉http的問題。解決方法是定位至“location ~ .*.(php|php5)?${}”在include fcgi.conf;或者在fastcgi_param配置后面加上:
fastcgi_param HTTPS on;
fastcgi_param HTTP_SCHEME https;
在這里是nginx官方的關于https的文檔,可以作為參考。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。