本文介绍利用 OpenSSL 自签发服务器 https 证书:CA 证书 (根证书) 和 server 证书 (服务器域名证书)。
XAMPP 套件已经自带 OpenSSL 了,若单独配置,可以自行安装 OpenSSL,同时避免使用 2014 年 4 月心脏出血漏洞时宣布存在漏洞的版本。(新版 XAMPP 已经完成了更新)。
具体教程
OpenSSL 官方推荐 win32 可执行文件版下载:
http://www.slproweb.com/products/Win32OpenSSL.html
1、ca.key CA 私钥:
openssl genrsa -des3 -out ca.key 2048
使用 “openssl genrsa -des3 -out ca.key 2048” 生成密钥文件时,是需要输入密钥的,运行的时候会让你输入并确认你的密钥,但是在 Windows 环境下,启动 Apache 会导致以下错误:
错误:Apache 启动失败
错误提示是:Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file .....)
原因是:window 下的 apache 不支持加密的私钥文件。可不使用 des3 加密。
2、制作解密后的 CA 私钥,但一般不需要这一步:
openssl rsa -in ca.key -out ca_decrypted.key
3、ca.crt CA 根证书 (公钥):
openssl req -new -x509 -days 7305 -key ca.key -out ca.crt
根证书时,commonname 可以是公司名字,而不需要是域名。
4、服务器 server 私钥:
openssl genrsa -des3 -out server.key 2048
window 下的 apache 不支持加密的私钥文件。可不使用 des3 加密。
5、制作解密后的服务器 server 私钥 (Win+Apache 需要解密后的 server 私钥):
openssl rsa -in server.key -out server.key2
6、从服务器 server 私钥生成签名请求 CSR 文件:
openssl req -new -key server.key -out server.csr
服务器证书,commonName 时输入域名,如*.creke.net,支持*通配符,邮箱之后的内容可填可不填,如果生成个人证书,如用来加密签名电子邮件,commonName 输入姓名,emailAddress 是电子邮件地址
7、使用 Root CA 为 user 签名
需要使用到的文件:server.csr, ca.crt,ca.key
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
如果 Root(CA 证书) 没有密码,以上命令后输入两次”y”,生成 server.crt 成功。
如果报错,请确定运行 openssl 命令的目录下是否有如下文件夹:
—demoCA(一级)
- newcerts(二级)
- private(二级)
及 demoCA 文件夹下有如下文件:
demoCA
- index.txt
- serial
index.txt 为空白文件,serial 文件中输入数字如:123.
三个步骤操作完成,附上 Root CA crt 格式转换为 der 格式命令:
openssl x509 -in ca.crt -outform DER -out ca.der
der 格式适用于某些移动设备导入根证书。
参考:
http://www.server110.com/apache/201309/1542.html
http://www.2cto.com/Article/201305/207362.html
http://suky.iteye.com/blog/713687
http://www.tuicool.com/articles/iIbM7n
http://cnzhx.net/blog/add-a-ssl-ca-to-firefox/
https://my.oschina.net/itblog/blog/651434 (特别推荐)