Nginx

Nginx,設置 https

  • May 7, 2014

我正在嘗試使用 NGINX ver 1.4.7 和 Phusion Passenger 4.0.41 在我的 ubuntu 伺服器上設置 https。

我使用這兩個命令創建了 .key 和 .csr

sudo openssl genrsa -des3 -out server.key 2048
sudo openssl req -new -key server.key -out server.csr

並將 .csr 發送到 sslshopper.com 伙計們

得到3個文件:

Root CA Certificate - AddTrustExternalCARoot.crt
Intermediate CA Certificate - USERTrustSecureServerCA.crt
Your COMODO SSL Certificate - subdomain_domain_com.crt

這就是我的 nginx.conf 現在的樣子

http {
   passenger_root /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41;
   passenger_ruby /usr/local/rvm/gems/ruby-2.1.1/wrappers/ruby;

server_names_hash_bucket_size 64;
include       mime.types;
default_type  application/octet-stream;

#access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

server {
   listen 443 default ssl;
   ssl on;
   ssl_certificate /opt/nginx/ssl/subdomain_domain_com.crt;
   ssl_certificate_key /opt/nginx/ssl/server.key;

   server_name app.petosevic.com; 
   root /var/www/petosevic/public; 
   passenger_enabled on;

  location / {
     # set X-FORWARDED_PROTO so ssl_requirement plugin works
     proxy_set_header X-FORWARDED_PROTO https;

         # standard rails+mongrel configuration goes here.
  }
}}

而當我嘗試啟動伺服器時,我需要輸入我在創建 .key 文件時輸入的密碼。當被接受時,我收到錯誤:

nginx: [emerg] SSL_CTX_use_PrivateKey_file("/opt/nginx/ssl/server.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)

我 100% 確定我向 sslshopper.com 的人發送了正確的 .csr 文件,但這看起來他們不匹配。

你怎麼看待這件事?

您可以使用以下方法手動驗證證書/密鑰對:

openssl x509 -noout -modulus -in subdomain_domain_com.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5

兩個命令的輸出應該是一樣的。這將告訴您這是一對有效的。

如果它是有效的,但你得到了那個錯誤,請查看nginx 中的“證書鏈”部分 - 配置 https 伺服器。NGINX 期望鍊式證書位於一個文件中,中間連接在伺服器證書之後。如果您將它們的順序錯誤,那就是您將得到的錯誤。

引用自:https://serverfault.com/questions/593771