在 Apache Tomcat 上配置中级 SSL 证书

在 Apache Tomcat 上配置中级 SSL 证书

我有一个使用 Let's Encrypt SSL 通配符证书的网站,效果很好。现在我想获取此证书并将其安装在我正在使用的另一台服务器上。

我的另一台服务器在 AWS 上运行 Tomcat。我从第一台服务器提取了 Base-64 编码的证书、私钥和中间证书,并将它们安装在这里。SSL 可以正常工作,但我遇到了一个小问题。如果我使用某些 SSL 测试 Web 应用程序测试我的网站,它们会提示“您的中间(捆绑)证书无效或缺失。”。

尽管我尝试了很多方法,但我不确定如何诊断或纠正问题。我有一个 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 中级证书。首先是我的服务器证书,然后是中级证书。

我没有包含根证书,因为我找到的所有文档都说这是不必要的。我确实尝试过包含它,但没有帮助。

答案1

仅仅复制证书、私钥和 CA 证书是不够的。这是因为在证书颁发期间,Let's Encrypt 使用 Certbot 来自动化该过程,这会修改您的默认 Apache 配置。如果没有,Certbot webroot 插件会为自己创建额外的配置文件,以使证书正常工作。

检查/etc/letsencrypt/live/yourdomain.com原始服务器上的目录。它包含 Certbot 运行所需的所有符号链接和子目录。将它们复制到您的 AWS 服务器以使其正常工作。检查此邮政在 Let's Encrypt 社区。

最好的方法是使用 AWS 上针对您站点的新证书,因为这很可能会节省您的时间。

如果您正在寻找可以在多个不同服务器上复制而无需修改其他配置的通配符证书,我建议使用 Cloudflare 提供的证书。

相关内容