内容简介:Nginx 設定 https 連線
假設要自己發憑證給網站。
先建立放SSL憑證的資料夾
$ mkdir /etc/nginx/ssl
產生網站的私鑰、證書。
example.com.key:私鑰(private key)
example.com.crt:證書(certificate)
(其中 -nodes 參數,表示不對 private key 加密,避免每次啟動 nginx 需要輸入密碼。)
$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/nginx/ssl/example.com.key -out /etc/nginx/ssl/example.com.crt
(再來填寫一些基本的資料,即可產生example.com.key、example.com.crt 兩個檔)
Country Name (2 letter code) [XX]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []: Email Address []:
在 nginx 網站設定檔加入監聽 443 SSL 設定、與指定憑證位置(原本 listen 80 可保留共存)
#SSL listen 443 ssl; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key;
重新讀取設定
$ systemctl reload nginx
若有設定防火牆,設定防火牆允許 https(443 port) 通行,
$ firewall-cmd --permanent --zone=public --add-service=https $ firewall-cmd --reload $ firewall-cmd --list-all --zone=public
其他:
-
若「listen 443 ssl;」只寫「listen 443;」,缺了「 ssl」
Chromw 會出現錯誤訊息:「net::ERR_SSL_PROTOCOL_ERROR」
Firefox 會出現錯誤訊息:「SSL 收到含超出最大允許字串長度的記錄。 錯誤代碼: SSL_ERROR_RX_RECORD_TOO_LONG」
參考: http://serverfault.com/q/605215 -
沒加 -nodes 參數,不對 private key 加密,產生的檔案內容格式:
example.com.key(私鑰)-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDeicw2jouYIdb3 +re2QwHGWfrAs7+6gdvPzbsZAX+1MaB5CulMOlqTW5R/xJCTyBRegdpc9Oq8Ufsz Nkp5EyABT/1kdACh8HBUd4emaRDdng8nkxi4m9bFuPvDV3eV9b1c44a/PoDrk5Ks ..... GToHKxAElC0nvdYRlTgmm4Gh2AbzaB7uhEkDd8ifuCAt4SssMu0MWvxXgUHNaJKc EVg8zxwJUnHotFVsQajaiVYnMDaMYoMe3PeUjIs5EK5ueEJnlB/jBYYlH6haVN2m CrOa1VRvAkRmWKUAzMObreEm -----END PRIVATE KEY-----
example.com.crt(證書)-----BEGIN CERTIFICATE----- MIIDkzCCAnugAwIBAgIJAJZQ6uDkx3pPMA0GCSqGSIb3DQEBCwUAMGAxCzAJBgNV BAYTAmFhMQswCQYDVQQIDAJhYTELMAkGA1UEBwwCYWExCjAIBgNVBAoMAWExCzAJ ..... pKE6/3wZ4SXio4oLKFGziBGqg+5kxzla2fb1PDUNRbmyQEzB+ZFtFgVHcgXU55ff bLprWdbDn4bldhEyl9UHWfwlOs0M6g6yfnc7zmJUxrZ5qmMmMhbkZJ4X30LUYZif Vgo4FV3Ujg== -----END CERTIFICATE-----
-
有加 -nodes 參數,對 private key 加密,產生的檔案內容格式:
example.com.key(私鑰)-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIwU2mXoH/UvICAggA MBQGCCqGSIb3DQMHBAgnLQEy2LhjSQSCBMiq040M9Ryl5ygXVvNorGkttO3wK0Tl uRRRZJplhQVBc09zm0N2HyjO93wZPnVycrI2n6m04w0IMSsc6IpbOaflqwcKN7xG ..... 37mVxQx45mN7f8im23uJDNs5n29yexc21YzaEaP5BNwBpJrJtNAVR0p63h+LRhGJ ByA24Brmys/RE5xpYkqtp4V47aJcIwYgy4LSyWW6ITGYRMq9FlaziUjyFpEaddIc ho8= -----END ENCRYPTED PRIVATE KEY-----
example.com.crt(證書)-----BEGIN CERTIFICATE----- MIIDlTCCAn2gAwIBAgIJAIT9a7cvK/EpMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV BAYTAmFhMQswCQYDVQQIDAJhYTELMAkGA1UEBwwCYWExCzAJBgNVBAoMAmFhMQsw ..... FT9xCMZp+Z6n6LwWdBWkJ1mASwkxgRDKZzSBaiRN35pT/JSbUqwGH8etD8QMXBBq CqiTJM/D3X6YMpKInKnFV7Z/qAQqpcfYYPzBLNAosOmUkUBVYxwtKbUxNoPJDMQi kEzWv9Oc5VNC -----END CERTIFICATE-----
-
查看 example.com.crt 證書內容
$ openssl x509 -in example.com.crt -text -noout
參考: DER vs. CRT vs. CER vs. PEM Certificates and How To Convert Them -
A certificate contains a public key
參考: What is the difference between a certificate and a key with respect to SSL? - Super User -
TLS:Transport Layer Security
SSL:Secure Socket Layer
.key:私鑰。
.csr:Certificate Signing Request 證書簽名請求,像憑證機構申請憑證時,給憑證機構的檔案。
.crt:Certificate,證書。
X.509:一種證書格式。一般 .crt 附檔名。BASE64編碼(apache、linux):.pem。二進位編碼(windows、Java):.der。
參考: openssl、x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼? - 菩提树下的杨过 - 博客园 -
一般向憑證機構申請憑證流程:
「產生 public key(CSR)、private key」-->「public key(CSR)給憑證機構簽署認証」-->「憑證機構回覆簽署後的 Certificate(證書、CRT)」
參考: SSL憑証(SSL certificate)的原理 - 知識庫 - 無限空間,虛擬主機,網域註冊,網域管理
其他參考:
http://nginx.org/en/docs/http/configuring_https_servers.html
NGINX 設定 HTTPS 網頁加密連線,建立自行簽署的 SSL 憑證 - G. T. Wang
Masterclass: Secure your website with SSL encryption | Linux Voice
不自量力 の Weithenn: SSL Certificate-自行產生 SSL 憑證
What is SSL and what are Certificates?
查 openssl 指令:
$ openssl -h (輸入不存在的指令,例如 -h,會列出可用指令) $ openssl req -h $ man openssl $ man req $ man x509
常用OPENSSL指令介紹 - SSL憑證推薦網 | SSL憑證 | code Sign
https://www.openssl.org/docs/manmaster/
https://www.openssl.org/docs/manmaster/man1/req.html
openssl 证书请求和自签名命令req详解 - Gordon0918 - 博客园
OpenSSL之命令详解 - 让梦冬眠 - 51CTO技术博客以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Programming Python
Mark Lutz / O'Reilly Media / 2006-8-30 / USD 59.99
Already the industry standard for Python users, "Programming Python" from O'Reilly just got even better. This third edition has been updated to reflect current best practices and the abundance of chan......一起来看看 《Programming Python》 这本书的介绍吧!
MD5 加密
MD5 加密工具
XML、JSON 在线转换
在线XML、JSON转换工具