TWCA 憑證放入 Nginx 憑證安裝 TWCA發回來憑證內容若要裝在nginx 上處理方式 解開cert.zip後會有下列檔案 主機憑證:root.cer 網域憑證:server.cer 中繼憑證1:uca_1.cer 中繼憑證2:uca_2.cer 檔案內容由上而下的順序uca_2在上面,再來是uca_1,透過下列指令産生檔案 cp uca_2.cer  uca.crt ; cat  uca_1.cer >> uca.cer 這個個設定可以適用於apache,apache的設定如下:        SSLEngine On        SSLCertificateFile /etc/ssl/server.cer        SSLCertificateKeyFile /etc/ssl/server.key        SSLCertificateChainFile /etc/ssl/uca.cer 若你要放在nginx上的處理方式有稍梢不同 nginx 上的設檔如下:         ssl on;         ssl_certificate /etc/ssl/server.pem;         ssl_certificate_key /etc/ssl/server.key;         ssl_session_timeout 5m;         ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;         ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";         ssl_prefer_server_ciphers on; server{ listen 80; listen 443 ssl; server_name demo.server.com.tw; ssl_certificate /etc/nginx/ssl/server.pem; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; ssl_prefer_server_ciphers on; #access_log /var/log/nginx/host.access.log main; location / { # root /usr/share/nginx/html; # index index.html index.htm; proxy_http_version 1.1; # 以下是reverse proxy 才需要 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_read_timeout 60s; proxy_pass http://192.168.1.1:20599/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } 其中/etc/ssl/server.pem和原來的産生的規則有些不同,他的順序是 server.cer + uca_2.cer + uca_1.cer 産生方法如下 cp server.cer server.pem;cat uca_2.cer >> server.pem ; cat uca_1.cer >> server.pem https://davidelin.blogspot.com/2014/12/nginx-twca.html 憑證需要密碼解決方案 今天設定客戶的域名遇到 SSL_CTX_use_PrivateKey_file、 EVP_DecryptFinal_ex:bad decrypt error 的錯誤訊息 指出是私鑰的問題。 May 07 16:43:18 terrylin nginx[5307]: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/ssl/terryl.in/2020/server.key") failed (SSL: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt error:0May 07 16:43:18 terrylin nginx[5307]: nginx: configuration file /etc/nginx/nginx.conf test failed May 07 16:43:18 terrylin systemd[1]: nginx.service: Control process exited, code=exited status=1 May 07 16:43:18 terrylin systemd[1]: nginx.service: Failed with result 'exit-code'. May 07 16:43:18 terrylin systemd[1]: Failed to start A high performance web server and a reverse proxy server. -- Subject: Unit nginx.service has failed 打開私鑰檔案,發現在以往的長的不一樣,開頭多了一些編碼資訊。 -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,D5F9600F17CDAB82 這是被密碼保護的私鑰。所以解決方法有兩種方式,一是補上設定在 nginx 的設定檔中。舉例,我們建立一個文字檔,命名為 ssl_password.txt 並將密碼存放在這個檔案。 在 Nginx 的設定中補上這一行。 ssl_password_file /etc/nginx/ssl/terryl.in/2020/ssl_password.txt; 重啟 Nginx,就可以了。 另外一種方法則是把有密碼保護的私鑰檔案轉成不需要密碼的私鑰。利用 OpenSSL 的指令如下: openssl rsa -in server.key -out new_server.key 會提示需要您輸入密碼。 Enter pass phrase for server.key: 密碼正確輸入的話,則會匯出 new_server.key,這是不需要密碼保護的私鑰檔案。當然 Nginx 的設定就照之前的設定就可以了。