您的位置:首页 > 运维架构 > Apache

windows2008 R2 下apache 创建ssl二级证书

2015-09-10 18:05 555 查看
写在前面的话

1.就是一些工作tips 专门的术语是一个坑 也许以后会填

2.其实ssl协议的证书看你怎么理解了 服务器 客服端 CA认证的 或者你理解成CA认证 然后一级 二级证书这么也可以

3.我创建的思路就是用CA局认证的一级证书 再去签署二级的请求证书申请 然后创建二级证书 最后对二级的密钥进行的解密 这么干嘛为毛这么干 我记得是win32下不支持加密的密钥 不过我用的是64位的机子 反正最后这么干成功了 至于为什么 以后再说吧

准备程序 注意64位和32位

Apache_HTTP_Server_2.4.12_.zip 附带openssl模块
apache-tomcat-7.0.64
jdk-7u79-windows
OpenLDAPforWindows_x64
Win64OpenSSL-1_0_0s
ActivePerl_5.16.2.3010812913


构建CA局证明书

构建CA局认证的环境  即私钥和证明书(这个构建的是证明书 不是证明书请求书)
因为是在openssl模块下创建的所以是以下的内容列表

Country Name (2 letter code)
"State or Province Name(full name)"
Locality Name (eg, city)
Organization Name(eg, company)
Organization Unit Name
"Common Name
(eg, your name or
your server's hostname)"
Email Address


输入命令

openssl req -new -x509 -newkey rsa:2048 -keyout {CA私钥} -out {CA证明书} -days {有效期}

2048是用多少位的字符加密 注意这里有问题 如果用软件自动创建相关的私钥和证书请求书 要注意使用多少位的字符加密的 因为有时候会出现countryName,stateOrProvinceName的不匹配问题

这个明明输入的都是一样的字符依旧出现请求签署时请求书和CA的证明书签名时内容不匹配的错误 针对这个错误

如下处理

# For the CA policy
[ policy_match ]
countryName             = match
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional
...


如果依旧有错误 那么就在linnux下一个代码一个资料老老实实的敲出来吧 然后从虚拟机从拖出来 然后在一个自定义的构建文件用目录创建下列文档和文件 如果不会 还是在linux创建了拖出来吧 这是用来签署一级证书用的环境

mkdir -p demoCA/newcerts
touch demoCA/index.txt
echo 01 > demoCA/serial
echo 01 > demoCA/crlnumber


签署一级证书

CA局的证明书构建完成之后用软件构建一级证书的私钥和证明书请求书

通常证明书请求书是以下内容

Country
State/Province()
City/Location()
Organization()
Organizational Unit()
Common Name()


需要注意的是请求书和CA局的证书签名时要进行内容匹配的内容的一致性 Commone Name一定要是你要授予证书的服务器域名或主机名

openssl ca -in {一级证明书请求书} -keyfile {CA私钥} -cert {CA証明書} -out {一级証明書}

注意ca私钥是key后缀的 ca证明书是CRT结尾的 证明书自然也是crt后缀的

签署二级证书

将一级证书的环境复制一份 然后创建二级证书的私钥和证明书请求书

openssl ca -in {二级证明书请求书} -keyfile {一级私钥} -cert {一级証明書} -out {二级証明書}

去除密码

openssl rsa -in {二级私钥} -out {解密后的私钥}

需要注意的配置问题

Define SRVROOT “/Apache24”

ServerRoot “${SRVROOT}”

定义的是apache安装的根目录

Include conf/extra/httpd-ssl.conf 此处需要激活

因为2.4的版本已经默认激活了ssl的模块 所以那步不用

对于激活上述步骤后无法开启apache  很简单 因为主机名不对应


httpd.conf

ServerName auth-server:80

httpd-ssl.conf

ServerName auth-server:443

Listen auth-server:443

这里对应的是二级证书请求书里面的COMMOM NAME 这个就是请求给那个域名进行签名的servername

最后再hosts中设置 如下例子

IP 域名 主机名

127.0.0.1   auth-server.com。cn auth-server
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  apache windows ssl