我经营着一家小公司,不幸的是我的 IT 支持刚刚辞职。我在 GAE 上运行一个网站。我的 SSL 已过期,我订购了新的 SSL,收到了以下文件:
- SHA-1 文件夹中有 3 个 .cer 文件
- SHA-2 文件夹中有 3 个 .der 文件
- csr.txt 文件
- privatekey.txt 文件
我需要上传到 Google App Engine,它要求:
- PEM 编码的 X509 证书
- 未加密的 PEM 编码 RSA 私钥
我在 Mac OS 上工作。我尝试使用 openssl,似乎已从 privatekey.txt 源生成了一个 private.pem 文件,但是当我在 csr.txt 文件上运行 openSSL 命令时,我得到:
$ openssl x509 -in csr.txt -out public.pem
unable to load certificate
23137:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/
OpenSSL098-52.8.1/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE
csr.txt 文件以 开始-----BEGIN CERTIFICATE-----
,以 结束,-----END CERTIFICATE-----
中间只包含密钥。
答案1
此命令不起作用:openssl x509 -in csr.txt -out public.pem
。您需要生成签名请求或 CSR。
要创建新的签名请求,请执行以下操作:
openssl req -key privatekey.txt -keyform PEM -days 365 -out example-com.req.pem
有关更多详细说明,请参阅如何在 Mac OS X 中轻松创建 SSL 证书并在 Apache2 中对其进行配置?专注于 CSR,不要太担心 Apache 之类的事情。
您可以使用以下方式检查签名请求:
openssl req -in example-com.req.pem -text -noout
没有命名要求。我碰巧使用site.type.encoding
。 这里有些例子:
example-com.req.pem
- 以 PEM 格式对 example.com 进行签名请求example-com.req.der
- 以 DER 格式对 example.com 进行签名的请求example-com.cert.pem
- PEM 格式的 example.com 证书example-com.cert.der
- example.com 的 DER 格式证书
这可能是一个争论点,但是...不要创建新密钥。只要现有密钥尚未被泄露,则可以使用现有密钥。
密钥连续性是比密钥轮换更理想的安全属性。密钥连续性还可以很好地与RFC 7469,HTTP 的主机公钥固定。如果你生成了一个新密钥,你实际上就破坏了 HPKP 和其他固定方案所使用的良好固定集。
根据您的安全状况,您可能会认为现有密钥可能因原 IT 管理员离职而受到损害。如果是这种情况,请生成新的密钥对。
此外,您还可以从以下网站获取免费的 1 类服务器证书星通和证书颁发机构。我知道大多数(所有?)桌面和移动浏览器都信任 StartCom 证书。