在 Apache Tomcat 上配置中間 SSL 證書
我有一個使用 Let’s Encrypt SSL 萬用字元證書的網站,效果很好。我現在想獲取此證書並將其安裝在我正在使用的另一台伺服器上。
我的另一台伺服器在 AWS 上執行 Tomcat。我已經從第一台伺服器中提取了 Base-64 編碼的證書、私鑰和中間證書,並將它們安裝在這裡。SSL 工作正常,但我有一個小問題。如果我使用一些 SSL 測試 webapp 測試我的網站,他們會說“您的中間(捆綁)證書無效或失去。”。
儘管我已經嘗試了很多方法,但我不確定如何診斷或糾正問題。我有一個 VirtualHost,我在其中正確配置了 SSLCertificateFile 和 SSLCertificateKeyFile。我嘗試創建一個 SSLCertificateChainFile 但甚至無法啟動我的伺服器,因為該指令已過時。然後我嘗試將中間證書連接到我的伺服器證書中(我在有和沒有根證書的情況下都這樣做了)。SSL 將在這里工作,但我仍然遇到缺少中間文件的問題。查看錯誤日誌,我什麼也沒看到。
有關如何診斷和解決此問題的任何想法?我知道配置它應該是直截了當的,但我不能讓它完全工作。
附加資訊:
執行 openssl 的輸出如下所示:
[ec2-user@ip-172-31-9-168 ~]$ openssl s_client -connect localhost:443 -showcerts CONNECTED(00000003) depth=0 CN = *.routercheck.com verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 CN = *.routercheck.com verify error:num=27:certificate not trusted verify return:1 depth=0 CN = *.routercheck.com verify error:num=21:unable to verify the first certificate verify return:1 --- Certificate chain 0 s:/CN=*.routercheck.com i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 -----BEGIN CERTIFICATE----- MIIGHTCCBQWgAwIBAgISA9b5buv7A7jbvwsOA18kT5qXMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA0MTYxOTE3NDJaFw0x ODA3MTUxOTE3NDJaMBwxGjAYBgNVBAMMESoucm91dGVyY2hlY2suY29tMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu4P+E9y7yU8yOFduoQBCKe7ZnWLN ISzB/0jmreFu/Y1ZhzCrs+ZOGw9P/jq+He71Bzea+wRkwbwDpQs0emEXhK5f4nLm msQ8yxB7Z3Rh+T/BJmzTgnuD2UUqBozSpue+hJcwAfBqNTo3vpyMhyIUbbAjIHtv 7jxMuXDx3eCrZVL6dD3qRUXRwAtT1Bz/ue07F4XoBagbLWAiWIiGPPdzbH/21qEf b7TsZEedbLSexldZtH4SWv3aPa02XXnzEvKsALIBDOB+aG3Z93LnWKSdnxxqUGpl +cgCUbQ8H25+uGUK7KQ2TS7OhDJRXRiHfeRbfGjPhJsVZ7DXLuvaYLCg6QIDAQAB o4IDKTCCAyUwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggr BgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSBjUKUkJFTPg1HQs4lpZTD KDik9DAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcB AQRjMGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlw dC5vcmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlw dC5vcmcvMC0GA1UdEQQmMCSCESoucm91dGVyY2hlY2suY29tgg9yb3V0ZXJjaGVj ay5jb20wgf4GA1UdIASB9jCB8zAIBgZngQwBAgEwgeYGCysGAQQBgt8TAQEBMIHW MCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYB BQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1 cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSBpbiBhY2NvcmRhbmNlIHdp dGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBhdCBodHRwczovL2xldHNl bmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzCCAQMGCisGAQQB1nkCBAIEgfQEgfEA7wB1 ANt0r+7LKeyx/so+cW0s5bmquzb3hHGDx12dTze2H79kAAABYtAbJMAAAAQDAEYw RAIgBWvnf3mcCyNfcIHWNN3n5haNLpttZ5+HMpwBhvjGzj0CIGUfB/b1eE+2kNSY 2yc8iOaeje/HNYuDcgCCHP+YBwAkAHYAKTxRllTIOWW6qlD8WAfUt2+/WHopctyk wwz05UVH9HgAAAFi0Bsk4AAABAMARzBFAiBLKmEApnrAjDyLR0tnwN4lNo0VObns 8x7a7JdnyQq3XgIhAJ3/QLr+swiqa001j6CsVguTDdDgwTY3KabBwRf9w+DXMA0G CSqGSIb3DQEBCwUAA4IBAQBTLIU1rVhw+r+irfr+Cq20Nbar+OOAaMiEb/0oUBCm znnBxbntuJ/h3nJbeoW5VrLcX1xGW50jox09/t/VKhXKwJ1zhtJtdkFcImiAQsDK j/ioT5YLzxf6VVo6AG8at9ADXBdI1WfeRjrC1xA+2KmmQDTUhhPjfn6oHzDjsgPZ 20AGlXpiabQWUxibjGYHNUazs4BgPfWwHCxPPqGo2afwPX2gs54UaiJShGG6VeL6 qnpxgRjzfho8gdLazLpckPoPKoTuiUR03nJvXV1oDaMmShN+IeRxky/KqTNeKOPc MRJIKbDsau7CxCRnWjn/XJWwZSDQHhkQJ3hGLtQKjswL -----END CERTIFICATE----- --- Server certificate subject=/CN=*.routercheck.com issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 -
我的證書文件有我的伺服器證書和文件中的 Let’s Encrypt 中間證書。我的伺服器證書首先是中間證書。
我不包括根證書,因為我發現的所有文件都說這是不必要的。我確實嘗試包含它,但它沒有幫助。
只需複制證書、私鑰,CA 證書是不夠的。這是因為在證書頒發過程中,Let’s Encrypt 使用 Certbot 來自動化修改預設 Apache 配置的過程。如果沒有,Certbot webroot 外掛會為自己創建額外的配置文件,以使證書正常工作。
檢查
/etc/letsencrypt/live/yourdomain.com
原始伺服器上的目錄。它包含 Certbot 工作所需的所有必要符號連結和子目錄。將它們複製到您的 AWS 伺服器以使其正常工作。查看Let’s Encrypt 社區上的這篇文章。最好的方法是在 AWS 上為您的站點使用新證書,因為它很可能會節省您的時間。
如果您正在尋找可以在多個不同伺服器上複製而無需修改其他配置的萬用字元證書,我建議您使用 Cloudflare 提供的那些。