离线环境下如何将CA颁发的服务器证书导出为XAMPP SSL配置可用的格式
离线环境下如何将CA颁发的服务器证书导出为XAMPP SSL配置可用的格式
嘿,伙计,针对你这个离线环境下的证书转换问题,我给你一步步捋清楚怎么做——完全不用依赖在线工具,全在本地搞定:
一、先准备好OpenSSL工具(离线可用)
因为你是离线服务器,得先在一台联网机器上下载Win64OpenSSL的安装包(选适配Windows Server 2019的版本),把安装包拷贝到你的离线服务器上完成安装。安装后记得找到它的bin目录,比如默认路径是C:\Program Files\OpenSSL-Win64\bin,后面操作都要用到这个路径。
二、从PFX文件提取私钥(.key)
你已经导出了带私钥的PFX文件,现在要把私钥单独提出来:
- 打开管理员模式的命令提示符,切换到OpenSSL的bin目录:
cd "C:\Program Files\OpenSSL-Win64\bin" - 执行提取私钥的命令(把
yourcert.pfx换成你实际的PFX文件名):openssl pkcs12 -in yourcert.pfx -nocerts -out server.key- 执行时会先让你输入PFX文件的导出密码,接着会提示你设置一个私钥的保护密码(这个密码是用来加密私钥的)。
- (可选但推荐)如果不想每次启动Apache都输密码,去掉私钥的密码:
之后XAMPP用这个openssl rsa -in server.key -out server-no-pass.keyserver-no-pass.key就行。
三、提取证书文件(.crt)
同样在OpenSSL的bin目录下,执行命令提取证书:
openssl pkcs12 -in yourcert.pfx -clcerts -nokeys -out server.crt
输入PFX的导出密码,就能得到XAMPP可用的.crt证书文件了。
四、配置XAMPP的SSL
- 把生成的
server.crt和server-no-pass.key(或者带密码的server.key)拷贝到XAMPP的证书目录,比如xampp\apache\conf\ssl.crt和xampp\apache\conf\ssl.key。 - 打开XAMPP的Apache SSL配置文件:
xampp\apache\conf\extra\httpd-ssl.conf,找到下面两行并修改为你的证书路径:SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt" SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server-no-pass.key" - (如果有中间CA证书)如果你的CA有中间证书,也要把中间证书导出为
.crt格式,然后添加一行:SSLCertificateChainFile "C:/xampp/apache/conf/ssl.crt/ca-intermediate.crt" - 重启XAMPP的Apache服务,SSL应该就能正常工作了。
备选方案:生成自签名证书(离线环境也能用)
如果觉得CA证书转换麻烦,也可以直接在离线服务器上生成自签名证书,步骤更简单:
在OpenSSL的bin目录执行:
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 3650 -nodes
按照提示输入服务器的信息(比如Common Name填你的服务器域名或IP),生成的server.key和server.crt直接拿去配置XAMPP就行。不过自签名证书在客户端访问时会弹出安全警告,如果你是内部离线环境,可以让客户端把这个证书加入信任列表,就能消除警告了。
备注:内容来源于stack exchange,提问作者JukEboX




