jquery

highlight.js

2021年5月4日 星期二

[Nginx] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate

今天在對接AWS api gateway時, 同事在抓我們server時一直失敗
但原本用Postman卻都可以正常回應, 最後發現是 SSL 憑證過期的問題
因為原本是走 http, 後來改成 https 後沒有注意 SSL 過期的問題

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate

但要接的server是用NGINX架的, 而我比較常用Apache
把設定SSL遇到的問題記錄下來

Apache會有三個檔案設定
SSLCertificateFile /etc/httpd/ssl/server.cer
SSLCertificateKeyFile /etc/httpd/ssl/server.key
SSLCertificateChainFile /etc/httpd/ssl/uca.cer

Nginx只有兩個
ssl_certificate /etc/nginx/ssl/server.cer;
ssl_certificate_key /etc/nginx/ssl/server.key;

從瀏覽器測也是正常的, 原本以為照這樣設定就可以了


但實際用Postman去呼叫時還是無法驗證, AWS api gateway 也是無法驗證



結果是因爲是沒有把中間憑證 SSLCertificateChainFile 設定到Nginx的關係, 不過找不到如何設定Nginx中間憑證的寫法
最後才發現這一篇: https://blog.steven266.de/include-a-certificate-chain-file-in-nginx-6dca9acdcbb6

需要把 SSLCertificateFile 跟 SSLCertificateChainFile 合在一起
cat server.cer uca.cer > bundle.crt

再把ssl_certificate改成產生好的檔案
ssl_certificate bundle.crt

最後再 reload 或 restart Nginx即可

留言 (0)

張貼留言