第一部分:概述
。。
第二部分:系统准备
1 操作系统
CentOS 6.x
IP:
2 安装openssl
yum install -y openssl
3 安装jdk
从官网下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
此处下载的是 jdk1.8 上传到CentOS6中,解压到/opt/jtools/java/目录下
配置环境变量
vim ~/.bash_profile export JAVA_HOME=/opt/jtools/java/jdk1.8 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH source ~/.bash_profile
第三部分:证书服务设计与部署
一、证书服务目录结构设计
证书服务部署时,需指定Openssl工作目录,初始脚本会自动创建相关文件夹和文件,并生成根证书。
二、 将相关脚本及配置文件,上传到服务器/opt/shdir目录下
initCaHome.sh
addServer.sh
generateServerCert.sh / generateServerCertForIIS.shaddClientCert.sh
openssl.cnf
为脚本配置执行权限
chmod +x /opt/shdir/*.sh
三、 执行初始化命令
/opt/shdir/initCaHome.sh /opt/ca_ws
$1 为指定的证书工作目录
第四部分:IIS服务应用
一、生成IIS服务器证书申请
此处使用一台Window server 2008 R2 的机器作为测试机,添加Web服务器角色后,
进入服务器管理器,找到 Internet 信息服务(IIS)管理器,点击右侧起始页下的节点
右侧点击进入服务器证书,右侧操作栏点击创建证书申请
申请证书,输入如下内容
通用名称:www.spads.cn
组织:spads
组织单位:spads
城市/地点:Beijing
省/市/自治区:Beijing
国家/地区:CN
点击下一步
加密服务提供程序属性,默认,点击下一步
为证书申请一个文件名,选择本地磁盘一个路径(E:\server_req.txt),点击完成。
此时得到一个IIS证书申请文件E:\server_req.txt。
二、签发服务端证书和客户端证书。
1 证书服务器上,执行脚本,初始应用证书目录。
/opt/shdir/addServer.sh /opt/ca_ws testIIS
$1 为指定的证书工作目录
$2 为应用名称
2 上传IIS证书请求文件
将IIS证书申请文件(server_req.txt),上传到/opt/ca_ws/apps/testIIS/server/cert_req 目录下
3 执行命令,签发服务端证书
/opt/shdir/generateServerCertForIIS.sh /opt/ca_ws testIIS
$1 为指定的证书工作目录
$2 为应用名称
此时可得到签发出的IIS服务端证书为 /opt/ca_ws/apps/testIIS/server/cert/server.pem
4 执行命令,签发客户端证书
/opt/shdir/addClientCert.sh /opt/ca_ws/ testIIS 3
$1 为指定的证书工作目录
$2 为应用名称
$3 为客户端编号
注:此处会导出带有私钥的客户端证书,会提示定义输出密码。
三、IIS 应用证书开启HTTPS双向认证
1 从证书服务器下载根证书、签发的服务端证书和客户端证书
/opt/ca_ws/rootca/cert/ca.crt
/opt/ca_ws/apps/testIIS/server/cert/server.pem
/opt/ca_ws/apps/testIIS/client/cert/client3.p12
2 安装根证书导入到IIS服务器
双击根证书(ca.crt),导入到受信任的根证书/本地计算机 目录中
3 导入服务器证书
打开Internet 信息服务(IIS)管理器,点击右侧起始页下的节点
右侧点击进入服务器证书,右侧操作栏点击完成证书申请,指定server.pem。完成服务器证书导入。
注:导入后,可双击打开列表中的证书,选择复制到文件,可以导出带私钥的服务器证书。
注:手工记录证书序列号,如果刷新列表,安装的证书消失,需要进入命令行修复证书(certutil -repairstore my 证书序列号)。
4 网站配置启用SSL
检查网站是否已经绑定了HTTPS,如果存在,删除。
增加绑定https,选择刚刚导入的服务器证书。
从功能窗口点击进入SSL配置,勾选必须,开启双向认证(客户端提供证书)。
5 客户端验证
未安装客户端证书,访问被限制
安装客户端证书,可以访问。
注:windows server 2008 R2 本机对证书有特殊限制(要求域名访问),所以需要在外部机器(Window7/10)进行测试
第五部分、Tomcat 服务应用
一、签发服务端证书和客户端证书
1 证书服务器上,执行脚本,初始应用证书目录。
/opt/shdir/addServer.sh /opt/ca_ws testTomcat
$1 为指定的证书工作目录
$2 为应用名称
2 签发服务器证书
/opt/shdir/addClientCert.sh /opt/ca_ws/ testIIS 3
$1 为指定的证书工作目录
$2 为应用名称
$3 为客户端编号
注:此处会导出带有私钥的客户端证书,会提示定义输出密码。
此时得到
服务端证书为 /opt/ca_ws/apps/testTomcat/server/cert/server.crt
证书私钥为 /opt/ca_ws/apps/testTomcat/server/private/server.key
3 签发客户端证书
/opt/shdir/addClientCert.sh /opt/ca_ws/ testTomcat 3
$1 为指定的证书工作目录
$2 为应用名称
$3 为客户端编号
注:此处会导出带有私钥的客户端证书,会提示定义输出密码。
4 导出Tomcat配置所需项
获取信任密钥库
keytool -import -file $1 -alias firstCA -keystore $2
$1 根证书路径 /opt/ca_ws/rootca/cert/ca.crt
$2 输出路径 /opt/ca_ws/apps/testTomcat/server/cert/myTrustStore
获取服务端证书
openssl pkcs12 -export -in $1 -inkey $2 -certfile $3 -out $4
$1 服务端证书路径 /opt/ca_ws/apps/testTomcat/server/cert/server.crt
$2 服务端私钥路径 /opt/ca_ws/apps/testTomcat/server/private/server.key
$3 根证书路径 /opt/ca_ws/rootca/cert/ca.crt
$4 输出路径 /opt/ca_ws/apps/testTomcat/server/cert/server.p12
二、Tomcat 应用证书开启HTTPS双向认证
1 拷贝文件
下载 myTrustStore、server.p12,并拷贝 到 tomcat/conf 目录下
2 单向SSL配置(tomcat/conf/server.xml)
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/server.p12" keystoreType="PKCS12" keystorePass="zzzzzz" />
3 双向SSL配置
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" keystoreFile="conf/server.p12" keystoreType="PKCS12" keystorePass="zzzzzz" truststoreFile="conf/myTrustStore" truststoreType="JKS" truststorePass="zzzzzz"/>
三、客户端验证
未安装客户端证书,访问被限制
安装客户端证书,可以访问。