先建立放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
openssl入門
寫程式是良心事業: OpenSSL - 金鑰與憑證的管理
OpenSSL 操作筆記 - 檔案格式轉換
不自量力 の Weithenn: SSL Certificate-自行產生 SSL 憑證
7.2. web 伺服器 ssl 證書
Chapter 7. OpenSSL
What is SSL and what are Certificates?
查 openssl 指令:
$ openssl -h (輸入不存在的指令,例如 -h,會列出可用指令) $ openssl req -h $ man openssl $ man req $ man x509OpenSSL - OpenFoundry
常用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技术博客
沒有留言:
張貼留言