已从Let's Encrypt生成了证书,并将其安装到现有的(正在运行的)纵横制服务器中,如下所示(并称为the documentation suggests):
"endpoint": {
"type": "tcp",
"port": 8089,
"tls": {
"key": "../ssl/key.pem",
"certificate": "../ssl/cert.pem"
}
},
通过Java连接时(如果其他API用不同的措词,我肯定结果会是相似的),结果是:
java.security.cert.CertPathValidatorException:找不到证书路径的信任锚
已经确定这可能是由于要求Let's Encrypt's intermediate certificate如此链接所致:
"endpoint": {
"type": "tcp",
"port": 8089,
"tls": {
"key": "../ssl/key.pem",
"certificate": "../ssl/cert.pem",
"ca_certificates": [
"../ssl/intermediate.cert.pem"
],
}
},
不幸的是,这也不起作用,导致握手错误(我没有记下确切的措辞)。
答案 0 :(得分:0)
深入研究我发现的文档this example明确引用了let加密中间件,但关键参数的名称不同:
"chain_certificates": [
"lets-encrypt-x3-cross-signed.pem"
],
尝试此操作会导致相同的问题(握手失败)
然后我尝试了以下操作:
基本上就是这样:
"tls": {
"key": "../ssl/key.pem",
"certificate": "../ssl/cert-plus-intermediate.pem"
}
再次重新启动服务器后(每次更改SSL设置都需要重新启动),连接已正确建立。还请注意,一旦配置工作正常,就应确保密钥文件只能由系统上的受信任用户读取,理想情况下,只有以(chmod 600 key.pem
身份运行的用户交叉开关