Nginx 設定 https 連線

栏目: 服务器 · Nginx · 发布时间: 8年前

内容简介: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

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 x509

OpenSSL - 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技术博客

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Database Design and Implementation

Database Design and Implementation

Edward Sciore / Wiley / 2008-10-24 / 1261.00 元

* Covering the traditional database system concepts from a systems perspective, this book addresses the functionality that database systems provide as well as what algorithms and design decisions will......一起来看看 《Database Design and Implementation》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具