You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用certutil生成证书后缺失私钥,如何获取私钥并在Apache中配置使用?

certutil生成证书后缺失私钥,如何获取私钥并在Apache中配置使用?

嘿,别担心!你的私钥根本没丢——当你运行那个PowerShell脚本里的certreq -new命令时,私钥就已经自动存在本地计算机的个人证书存储里了(因为脚本里设置了MachineKeySet = TRUE,所以是机器级别的存储,不是用户个人存储)。certreq -retrieve只是从CA下载了颁发的证书文件,并没有把本地的私钥一起导出,所以你需要把证书和私钥打包成PFX格式,再转换成Apache能用的格式。

下面一步步来操作:

第一步:导出包含私钥的PFX文件

你可以用图形界面或者命令行来做,选你顺手的方式就行:

图形界面方式

  1. 按下Win+R,输入certlm.msc回车,打开本地计算机证书管理器
  2. 展开左侧的「个人」→「证书」,找到你刚申请的证书(看CN名称就能识别)
  3. 右键这个证书 → 「所有任务」→ 「导出」
  4. 在导出向导里选择「是,导出私钥」,然后下一步选择「个人信息交换 - PKCS #12 (.PFX)」格式
  5. 设置一个安全的密码(后续转换需要用到),然后选择保存路径,完成导出。

命令行方式

  1. 先获取证书的指纹:打开PowerShell,运行certutil -store My,找到对应CN的证书,复制它的指纹(一串十六进制字符,记得去掉中间的空格)
  2. 运行导出命令,替换成你的密码、指纹和文件名:
certutil -exportpfx -p "你的安全密码" My "证书指纹(无空格)" "$CN.pfx"

比如:certutil -exportpfx -p "MyPass123!" My "A1B2C3D4E5F67890" "test.pfx"

第二步:将PFX转换成Apache支持的PEM格式

Apache通常需要分开的证书文件(.crt)和私钥文件(.key),我们用OpenSSL来转换:

  1. 导出私钥(如果不想让私钥带密码保护,就加-nodes参数;如果需要密码保护,去掉这个参数):
openssl pkcs12 -in "$CN.pfx" -nocerts -out "$CN.key" -nodes
  1. 导出证书文件:
openssl pkcs12 -in "$CN.pfx" -nokeys -out "$CN.crt"

运行时会提示你输入之前设置的PFX密码,输入即可完成转换。

第三步:配置Apache使用证书

找到Apache的SSL配置文件(通常是ssl.conf或者httpd.conf里的SSL块),修改以下配置项:

# 指定证书文件路径
SSLCertificateFile "/path/to/your/certificate/$CN.crt"
# 指定私钥文件路径
SSLCertificateKeyFile "/path/to/your/private-key/$CN.key"
# 如果需要让客户端信任你的CA,还可以加上根证书路径
# SSLCACertificateFile "/path/to/your/root-ca.crt"

保存配置后,重启Apache服务,你的HTTPS服务就能正常使用这个证书了。

备注:内容来源于stack exchange,提问作者Daviid

火山引擎 最新活动