首页 > 工具箱 > 私钥密码加解密

私钥密码加解密

私钥加了密码,nginx、Apache 每次启动都要人守着输一次;不加密码,文件被谁拷走就等于身份被谁拿走。这页做三件事:给明文私钥加密码、把带密码的私钥解开、给已有密码的私钥换一个密码。计算全在浏览器本地用 WebCrypto 完成,私钥和密码都不会发到服务器

看到 ENCRYPTED PRIVATE KEY 或者头部有 Proc-Type: 4,ENCRYPTED,就是带密码的私钥。

要不要给私钥加密码

服务器上的私钥,一般不加
加了密码,nginx / Apache 每次重启都会停在那里等人输密码,自动重启、开机自启、容器滚动更新全都做不了。实际部署里通行的做法是:私钥不加密码,靠文件权限(chmod 600、属主 root)和机器本身的访问控制来保护。
要传给别人、要存到仓库或网盘的私钥,一定要加
私钥离开服务器的那一刻,文件权限就保护不了它了。发邮件、丢群里、放对象存储之前先加个强密码,是最后一道防线。
两种加密格式的区别
老格式是在 PEM 头里写 Proc-Type: 4,ENCRYPTEDDEK-Info,密钥派生用的是 MD5 迭代一次,非常弱,现在只适合读不适合写。新格式是 PKCS#8 的 ENCRYPTED PRIVATE KEY,走 PBES2(PBKDF2 + AES),本页生成的就是这种。
对应的 openssl 命令
加密码:openssl pkcs8 -topk8 -in plain.key -out enc.key -v2 aes-256-cbc;去密码:openssl pkcs8 -topk8 -nocrypt -in enc.key -out plain.key;老格式去密码:openssl rsa -in enc.key -out plain.key。本页做的是同样的事,区别是不需要把私钥拷到装了 openssl 的机器上。
密码忘了怎么办
没有找回的办法。只能重新生成密钥对,用 CSR 生成 重做一份申请,让 CA 重新签发。
怎么确认解出来的私钥没解错
本页会在结果里给出公钥指纹。拿它和证书的公钥指纹对一下就知道配不配,也可以直接用 证书私钥配对 把证书和私钥放一起校验。
已复制