Nginx 設定 https 連線

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

内容简介: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技术博客

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

查看所有标签

猜你喜欢:

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

Dive Into Python

Dive Into Python

Mark Pilgrim / Apress / 2004-11-5 / GBP 31.49

Python is a new and innovative scripting language. It is set to replace Perl as the programming language of choice for shell scripters, and for serious application developers who want a feature-rich, ......一起来看看 《Dive Into Python》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具