我正在尝试实现螺柱作为 HAProxy 之前的 SSL 终止点,作为 WebSockets 路由的概念证明。我的域名注册商 Gandi.net 提供免费的 1 年 SSL 证书。
通过 OpenSSL,我生成了一个 CSR,它给了我两个文件:
- 域名密钥
- 域名.csr
我将 domain.csr 交给了我信任的机构,他们给了我两个文件:
- 域名证书
- GandiStandardSSLCA.pem(我认为这被称为中间证书?)
这是我遇到的摩擦:Stud 使用 OpenSSL,希望“pem-file”中有一个“rsa 私钥” - 它将其描述为“SSL x509 证书文件。必需”。
如果我将 domain.key 添加到 Stud 的 pem 文件的底部,Stud 将会启动,但我会收到浏览器警告,提示“证书是自签名的”。如果我省略 domain.key,Stud 将不会启动,并会抛出一个由 OpenSSL 函数触发的错误,该函数似乎旨在确定我的“pem 文件”是否包含“RSA 私钥”。
目前我无法确定问题是否是:
- 免费 SSL 证书始终是自签名的,并且始终会导致浏览器出现警告
- 我只是没有正确使用 Stud
- 我使用了错误的“RSA 私钥”
- CA 域证书、中间证书和私钥的顺序错误。
答案1
SSL X509 证书文件是包含 ITU 在其 X 系列规范中指定的格式(具体为 x.509)的证书的文件。由于它是一种证书格式,因此其中不包含私钥信息,因此名称、公钥、签名、有效期和其他有用信息都包含在其中,但私钥除外。
PEM 是一套隐私增强邮件规范 - 它提供了大部分基于 PKCS 规范的打包标准(PKCS 规范由 RSA 和 RSA 实验室自己开发,供公众使用,以实现各种实现之间的互操作性 - IETF 和其他领域的社区也做了同样的事情)。您可以使用 openssl 来转换格式 - 请参阅此处http://www.openssl.org/docs/apps/openssl.html. 连接不会给你任何帮助。
如果证书是自签名的,那么 CA 将其提供给您的情况就有点奇怪了 - 这让我认为您正在讲述将 Gandi CA 证书提供给 openssl,这告诉您该证书是自签名的(因此它是根或最终实体证书,但肯定不是中间又名链证书)。
解决您的一些问题:1 自签名证书在良好的客户端中始终会生成警告,因为它们缺乏信任,直到用户决定它们值得信任(或者对于大多数用户来说,直到 Microsoft、Mozilla Foundation、Google 或 Opera)决定用户应该信任该 CA)。 如果您的客户端(浏览器或其他)存储了 CA 并将其标记为受信任,则不会弹出此警告。 2 可能 3 看起来您在 Gandi 中使用了正确的密钥和 CSR 4 在我看来,您需要通过操作系统级别信任配置或通过 Stud 配置将域密钥和证书以及可能的 CA 加载到 OpenSSL 中。