Apache 中的 KEYTOOL 等效项

Apache 中的 KEYTOOL 等效项

apache/php 中 keytool add 的等效命令是什么

答案1

这很简单,任何困难都首先在于生成 CSR。

openssl req -batch -newkey rsa:2048 -out something.pem

这还应该给你一个 something.key(你的私钥)

(提示:找到上述内容的脚本并进行编辑;您可能会经常使用它)。

将其发送给您的 CA 以获取证书。我们通常要求将其返回为适用于“Linux 上的 Apache”。这意味着您将获得一个 PEM 证书,其中包含一系列中间 CA 证书和根 CA 证书,这些证书也是 PEM 格式。您可能会得到这些证书的串联。

要配置 Apache(这些是具有一些本地命名约定的 Red Hat 目录):

  • SSLPrivateKey指向 /etc/pki/tls/private/something.key 并且该文件需要具有受限访问权限,以便 root 无法读取它。
  • SSLCertificateFile指向 /etc/pki/tls/certs/something.crt(或 .pem - 实际文件名根本不重要,保持一致更有用)。这包含您的证书(单个 PEM)
  • SSLCertificateChainFile指向 /etc/pki/tls/certs/something.ca-bundle(这是我自己的本地约定)。这包含服务器应提供的中间 CA 证书和根 CA 证书的串联。您不需要包含根证书,但您需要确保存在足够的链,以便所有客户端都可以建立足够的链来建立信任。

说实话,最多令人沮丧的是,当您在不同类型的服务器上工作时,您需要弄清楚将文件放在哪里(例如,Red Hat 和 Debian 有完全不同的约定)。在大多数情况下,这并不重要,除非您有某种强制访问控制(例如,SELinux - 您需要将文件放在允许 httpd 读取它们的位置)。

另一件令人沮丧的事情是弄清楚如何测试它。我已经开发了几个脚本(因为我经常这样做),称为 ssl-get-basics 和 ssl-rfc-xargs,您可以在我的 github scriptorium 仓库

请注意,您通常可以通过两种非常令人困惑的顺序之一获得 CA 证书链(“反向” - 这可能与您的期望相反),和。如果您使用我的ssl-get-basics(或,openssl s_client -show-certs -connect something.example.com:443 < /dev/null | grep (for subject and issuer)那么您需要确保一个证书的颁发者是下一个证书的主题。我过去曾遇到过这方面的问题(但这不是 Apache 特有的)。

此外,如果您将来发现自己需要将它们组合到密钥库中,那么将它们组合到 PKCS#12 密钥库中比组合到 JKS 中更容易...支持 JKS 的任何内容(Java)都将支持 PKCS#12(又名 PKCS12 又名 P12)

答案2

检查 openssl 工具,它是免费的、非 Java 的:http://en.wikipedia.org/wiki/OpenSSL

相关内容