将 Lets Encrypt SSL 证书与 crossbar WAMP 路由器 (0.13) 结合使用
Using Lets Encrypt SSL certificates with crossbar WAMP router (0.13)
证书已从 Let's Encrypt 生成并安装到现有(工作中的)crossbar 服务器上,如下(和 the documentation suggests):
"endpoint": {
"type": "tcp",
"port": 8089,
"tls": {
"key": "../ssl/key.pem",
"certificate": "../ssl/cert.pem"
}
},
当通过 Java 连接时(我相信如果在其他 API 中措辞不同,结果也会相似)结果是:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
确定这可能是因为需要 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"
],
}
},
不幸的是,这也不起作用,导致握手错误(我没有记下确切的措辞)。
深入研究我发现 this example 的文档,它明确引用了一个 lets encrypt 中间体,但密钥参数的名称不同:
"chain_certificates": [
"lets-encrypt-x3-cross-signed.pem"
],
尝试这个导致了同样的问题(握手失败)
然后我尝试了以下方法:
- 将证书文件与 Let's Encrypt 的中间文件连接起来
- 仅使用证书和密钥参数恢复到初始配置
所以基本上是这样的:
"tls": {
"key": "../ssl/key.pem",
"certificate": "../ssl/cert-plus-intermediate.pem"
}
再次重新启动服务器后(每次更改 SSL 设置都需要重新启动)连接正确建立。另请注意,一旦你有了一个有效的配置,你应该确保密钥文件只能由系统上的受信任用户读取,理想情况下,只要哪个用户 crossbar 将 运行 as (chmod 600 key.pem
)
证书已从 Let's Encrypt 生成并安装到现有(工作中的)crossbar 服务器上,如下(和 the documentation suggests):
"endpoint": {
"type": "tcp",
"port": 8089,
"tls": {
"key": "../ssl/key.pem",
"certificate": "../ssl/cert.pem"
}
},
当通过 Java 连接时(我相信如果在其他 API 中措辞不同,结果也会相似)结果是:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
确定这可能是因为需要 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"
],
}
},
不幸的是,这也不起作用,导致握手错误(我没有记下确切的措辞)。
深入研究我发现 this example 的文档,它明确引用了一个 lets encrypt 中间体,但密钥参数的名称不同:
"chain_certificates": [
"lets-encrypt-x3-cross-signed.pem"
],
尝试这个导致了同样的问题(握手失败)
然后我尝试了以下方法:
- 将证书文件与 Let's Encrypt 的中间文件连接起来
- 仅使用证书和密钥参数恢复到初始配置
所以基本上是这样的:
"tls": {
"key": "../ssl/key.pem",
"certificate": "../ssl/cert-plus-intermediate.pem"
}
再次重新启动服务器后(每次更改 SSL 设置都需要重新启动)连接正确建立。另请注意,一旦你有了一个有效的配置,你应该确保密钥文件只能由系统上的受信任用户读取,理想情况下,只要哪个用户 crossbar 将 运行 as (chmod 600 key.pem
)