前提:
安装好openssl工具。
通过windows cmd 命令进入 openssl工作目录
如解压目录为:E:\ openssl-1.0.2-beta1
则工作目录为E:\openssl-1.0.2-beta1\inc32\out32dll
通过cmd >cd /d E:\openssl-1.0.2-beta1\inc32\out32dll
建立证书存放目录:E:\ssl
下面是使用opensll实现CA并签发证书的过程:
1) 生成CA密钥CA作为一个权威机构,他本身也是使用证书来标识自己,CA本身也拥有私钥。在签发数字证书的过程中,CA的私钥主要用于加密用户证书请求中的用户信息及公钥。
Opensslgenrsa -out E:\ssl\cakey.pem 1024
该命令会产生长度为1024字节的私钥文件cakey.pem。
2) 生成CA证书请求
Opensslreq -new -out E:\ssl\careq.csr -key E:\ssl\cakey.pem -configE:\openssl-1.0.2-beta1\apps\openssl.cnf
注意:openssl.cnf文件请在openssl-1.0.2-beta1目录下搜索,填写具体的目录
输入项说明:
AU:国家代码CN代表中国
Some-State:地区BJ 自定义北京(此处输入要于下方1)生成初始密钥库一致)
Eg,city:城市BJ 自定义北京(同上要于下方1)生成初始密钥库一致)
Internet Widgits Pty Ltd:机构名称 cebbbak 自定义光大 (同上要于下方1)生成初始密钥库一致)
机构名称cebbank自定义光大 (同上要于下方1)生成初始密钥库一致)
网址或者 IP (同上要于下方1)生成初始密钥库一致)
以下项可以为空:
此命令会根据cakey.pem产生该证书的请求文件careq.csr。
3)用CA私钥自签名
Opensslx509 -req -in E:\ssl\careq.csr -out E:\ssl\cacert.pem -signkey E:\ssl\cakey.pem -days 3650
说明:-days 指定证书有效期 10年自定义
该命令会根据输入的证书请求及CA私钥,生成CA证书。至此,作为CA所要求的证书已经准备好,所得到的cakey.pem可用于将来颁发证书,而cacert.pem证书作为用户的可信任证书,需要分发给每一个由该CA机构颁发证书的实体。
服务器证书与客户端证书的制作服务器证书与客户端证书的制作稍有不同,这是由于服务器对证书格式与客户端证书格式要求不同导致的。对于Tomcat或Weblogic这样的服务器,通常都要求一种JKS格式的文件,在该文件中,保存有服务器私钥、服务器证书以及服务器根证书链(从RootCA一直到服务器证书颁发机构的一系列CA证书列表)。
服务器证书要制作这一类证书,需要使用JDK提供的一个工具keytool。
说明:此处需要切换到JDK工作环境:
如本地为:D:\ProgramFiles\Java\jdk1.6.0_24\bin
执行CDM >cd /d D:\ProgramFiles\Java\jdk1.6.0_24\bin
下面是使用keytool制作证书库的过程:
1)生成初始密钥库
keytool-genkey -alias serveralias -keyalg RSA -keysize 1024 -dname "cn=10.192.109.227,ou=cebbank, o=cebbank,l=BJ, st=BJ, c=CN" -keypass password -keystore E:\ssl\server.jks-storepass password -validity 7300
其中 –dname 中的参数说明:cn:服务器域名或者IP,ou:所属机构,o:所属单位,l:地区,st:地区,c:国家代码 ,keypass:密码 ,storepass:密码
2) 生成证书请求
keytool-certreq -alias serveralias -sigalg MD5withRSA -file E:/ssl/server.csr-keystore E:/ssl/server.jks -keypass password -storepass password
最后生成的证书请求文件为server.csr。把该请求发送给证书颁发机构,该机构将会验证证书请求中的实体信息,然后实现签证。因为我们是自己做CA,所以签证这一步也是我们自己来做。
3) 实现签证签证仍然使用openssl,而不是keytool。在openssl中,输入以下命令:
切换为:openssl目录
执行以下命令:
opensslx509 -req -in E:/ssl/server.csr -out E:/ssl/servercert.pem -CAE:/ssl/cacert.pem -CAkey E:/ssl/cakey.pem -CAcreateserial -days 3650
输出的servercert.pem文件即是签证后的证书,即证书请求响应。命令中用到的cakey.pem
和cacert.pem是上面生成的CA密钥文件和CA根证书。完成CA签证后,把证书请求响应连同CA根证书一起返回给申请者。申请者需要把CA根证书( 链)及证书请求响应导入到
JKS库中。此时使用的工具是keytool。
切换为:JDK目录
执行以下命令:
Keytool-import -trustcacerts -keystore E:/ssl/server.jks -file E:/ssl/cacert.pem-alias RootCAkeytool
再执行下列命令:
keytool-import -trustcacerts -keystore E:/ssl/server.jks -file E:/ssl/servercert.pem-alias serveralias
注意serveralias名称在配置weblogic有用到,具体配置weblogic ssl请参考百度
需要注意的是,首先导入CA根证书(链),最后才导入证书请求响应,而且导入证书请求响应时的别名必须与生成JKS库时使用的别名一致。至此,服务器端的JKS文件已经完成,可以配置到相应的服务器中。
注意:在weblogic 服务器上jdk需要支持rsa算法的像有些JDK不支持,最好使用weblogic自带的。