`

openssl 创建ssl证书

阅读更多

 

http://han-zw.iteye.com/blog/640737 转自这里

前段时间接触webservice,需要建立基于ssl的webservice以保证安全性,并要提供数字的支持。关于这部分以前没有搞过,经过摸索总算有些收获。现在把我的一些经验share一下。

一、 数字证书的相关准备
关于数字证书部分我是用openssl做的,也是个开源的软件,前不久刚刚发布了1.0版本(做了11年才正式发布,由衷的佩服,老外真是有股哏劲)。网上很多文章介绍用java自带的keytool命令完成,我没有试过,不过看文章介绍好像keytool没有CA认证的功能。下面开始数字证书相关操作。


1. 下载、安装openssl(好像是废话)
Openssl建议大家用1.0版本,毕竟是正式版本。我用的时候正式版还没出来,当时用的是OpenSSL 0.9.8m,不要用OpenSSL 0.9.8h这个版本(有个bug,会影响到后面的操作)。安装后从命令行进入安装目录下的bin目录。Ready! GO!。


2.创建CA的私钥
执行以下命令openssl genrsa -des3 -out ../demo/ca/ca.key 1024
demo是我的工作目录,接下来会提示你输入密码,后面用到的密码会很多,最好都认真记下来。


3.创建CA证书
openssl req -new -x509 -key ../demo/ca/ca.key -out ../demo/ca/ca.crt -days 365
x509是一种加密的标准,-out是指输出的文件路径,-key是指定私钥,也就是上一步生成的那个,-days是指证书有效期。
注:再输入common name时你可以指定你自己的名字,但是不能输入你的服务器名(www.XX.X.com)


4.创建server端的私钥
因为咱们是要在server端提供SSL的webservice,所以在server端需要使用私钥库和信任库。
openssl genrsa -des3 -out ../demo/server/server.key 1024

 

5.创建server证书签名请求
我们可以发送签名请求到一个官方的CA机构,这些机构都是要收费的,而且还要严格审核,至于我们自己开发过程中的话实在是没必要。我们直接发送到我们刚才通过openssl构建的CA就可以了。
openssl req -new -key ../demo/server/server.key -out ../demo/server/server.csr
注意这里的common name,此处填写你的服务器的ip或者域名,例如localhost,也就是你要为哪台服务器做证书就指定那台机器。

 

6.CA签署server证书
如果是第一次通过CA签署证书的话,执行如下命令
openssl x509 -req -days 30 -in ../demo/server/server.csr -CA ../demo/ca/ca.crt -CAkey ../demo/ca/ca.key -CAcreateserial -out ../demo/server/server.crt
其中的-CAcreateserial是指创建一个新的序列文件。这样openssl会在当前目录下创建一个名为ca.srl的文件存储序列号(官方是这样说的,我本地产生的序列文件是.srl,搞不清怎么回事,可能是创建时没指定名字吧,不过不影响后面的操作)。下次再次签署证书时就可以直接指定这个序列文件了。命令如下:openssl x509 -req -days 30 -in ../demo/server/server.csr -CA ../demo/ca/ca.crt -CAkey ../demo/ca/ca.key -CAserial .srl -out ../demo/server/server.crt
输入CA私钥的密码后签署成功。

 

7.创建server端的pkcs12文件
openssl pkcs12 -export -in ../demo/server/server.crt -inkey ../demo/server/server.key -out ../demo/server/server.p12 -name demo_server
注意其中的-name demo_server,这个是指定keystore的别名,记下来,很重要哦(weblogic要用到,网上的资料都没有这个参数,害得我weblogic配置时费老了劲了)。

 

8.转换pkcs12为JKS keystore文件
这个过程需要用到jetty.jar,下载相应jar后添加到classpath,然后执行如下命令
java org.mortbay.util.PKCS12Import ../demo/server/server.p12 ../demo/server/server.jks
在此处输入上一步设置到export password。

Server端相关文件就完成了,现在可以用java的keytool命令查看一下生成的server.jks的内容
keytool -v -list -keystore ../demo/server/server.jks
接下来开始准备client端的相关文件,因为我们启用了数字证书的机制,client在通过webservice访问server时也需要提供自己的证书,也就是server和client相互认证(客户要求的,唉)。客户端的相关操作与server端类似,不做过多说明。

 

9.创建client端的私钥
openssl req -new -newkey rsa:1024 -nodes  -out ../demo/client/client.req -keyout ../demo/client/client.key

 

10.创建client端证书签名请求
openssl x509 -CA ../demo/ca/ca.crt -CAkey ../demo/ca/ca.key -CAserial .srl -req -in ../demo/client/client.req -out ../demo/client/client.pem -days 365

 

11.创建client端的pkcs12文件
openssl pkcs12 -export -clcerts -in ../demo/client/client.pem -inkey ../demo/client/client.key -out ../demo/client/client.p12 -name

 

12.创建client端的jks文件
java org.mortbay.util.PKCS12Import ../demo/client/client.p12 ../demo/client/client.jks

 

13.创建信任密钥库
这次用到java的keytool命令
keytool -genkey -alias dummy -keyalg RSA -keystore ../demo/server/truststore.jks
到此为止数字证书的部分就完成了,下面介绍一下tomcat如何配置ssl支持。

 

14.将CA认证过的证书导入信任库

keytool -import -v -trustcacerts -alias my_ca -file ../demo/ca/ca.crt -keystore ../demo/server/truststore.jks

通过下面的命令可以查看信任库的详细信息

keytool -v -list -keystore ../demo/server/truststore.jks


二、 tomcat ssl支持的配置

1. 在tomcat的server.xml中添加一个新的connector,配置如下
<Connector  port="8443" maxHttpHeaderSize="8192" 
SSLEnabled="true"
         maxThreads="150" 
         minSpareThreads="25" 
         maxSpareThreads="75" 
         enableLookups="false" 
         disableUploadTimeout="true" 
         acceptCount="100" 
         scheme="https" 
         secure="true" 
         clientAuth="false" 
         sslProtocol="TLS" 
         keystoreFile="/conf/server.jks" 
         keystorePass="XXXXXX" 
         algorithm="SunX509" 
     /> 
注:keystoreFile对应server端的jks文件,keystorePass对应其密码

2. 重启tomcat,在浏览器中敲入https://localhost:8443/测试一下
通过https访问web功能时需要在浏览器中导入证书,因为我们主要解决webservice的ssl,关于浏览器如何导证书就不做介绍了。
Tomcat的配置就这么简单。

三、 weblogic9.2 ssl配置
weblogic通过控制台就可以完成ssl的配置,以下是部分截图
1. 登录weblogic控制台 ,点击页面左端所属域下的:环境&gt;&gt;服务器&gt;&gt; 点击所属服务器进行编辑,在常规选项卡中作如下配置,如图(注意红色区域):
[img]/admin/blogs/7.jpg&quot; alt=&quot;图7[/img]

 

2. 切换到私钥库选项卡
[img]/admin/blogs/8.jpg&quot; alt=&quot;图8[/img]
注:1.密钥库选择“自定义标识和自定义信任”
      2.密钥库的位置可以用绝对路径也可以用相对路径
      3.密码就是我们在数字证书部分的密码


3. 切换到SSL选项卡

[img]/admin/blogs/9.jpg&quot; alt=&quot;图9[/img]

注意那个私钥别名,就是我们在数字证书部分指定的server私钥的那个别名

好了,保存设置后重启就可以了。访问https://localhost:7002/试一下吧。

终于写完了,以前老是在javaeye中看别人的文章,还老挑毛病,今天第一次写博客,没想到这么累啊,实在是不会贴图,搞了半天都不行,还是直接传附件吧!

这次算是投石问路吧,好的话下周再写一下利用cxf建立SSL的webservice(数字证书以及鉴权机制)。

分享到:
评论
1 楼 sjp524617477 2012-06-18  
先顶在看

相关推荐

    OpenSSL生成的ssl证书

    通过OpenSSL生成的ssl证书,用于windows下用nginx配置https服务器( OpenSSL创建证书) 无需再下载OpenSSL,配置OpenSSL相关环境,在进行命令生成证书

    Nginx配置SSL自签名证书的方法

    主要介绍了Nginx配置SSL自签名证书的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    使用OpenSSL来制作证书,在IIS中配置HTTPS(SSL)笔记.pdf

    使用OpenSSL为基于IIS的站点创建服务器端证书及客户端证书,实现双向认证。

    openssl生成认证证书的工具

    加压后除了openssl.exe以外,还有一个bat文件,这个可以帮助我们快速创建证书申请文件。 运行autocsr.bat,按照提示输入信息,之后按任意键确认。你会得到两个文件,一个server.key,这是私钥文件,还有一个名为...

    tomcat的双向ssl配置

    使用openssl与jdk的keytool生成根证书,server端证书,浏览器端证书,并配置使工程跑在https上。(带dos脚本)

    Shell脚本实现生成SSL自签署证书

    启用 apache 的 mod_ssl 之后需要有证书才能正常运作。写了个脚本来操作。首先要确定机器上已经有 openssl 。 代码如下: #!/bin/sh # # ssl 证书输出的根目录。 sslOutputRoot=”/etc/apache_ssl” if [ $# -eq 1 ]...

    windows创建自签名SSL证书所需工具

    制作windows自签名证书所需要的工具openssl-0.9.8k_WIN32,解压后参考此篇文件进行制作:https://blog.csdn.net/u013992330/article/details/89090380

    ansible-openssl:Ansible角色,用于安装openssl并创建导入证书

    导入ssl证书和密钥 创建一个自签名证书 (可选)安装CACert根证书 笔记: 由于Ansible Galaxy现在支持,因此该角色已从franklinkim.openssl转移到weareinteractive.openssl ! 安装 使用ansible-galaxy : $ ...

    ssl.tar.gz_python openssl_证书_证书验证

    openssl实现客户端与服务器证书创建生成并验证

    mkssl:使用OpenSSL创建证书颁发机构和证书的Shell脚本

    #使用OpenSSL创建证书颁发机构和证书MichaëlBekaert ##摘要这是使用OpenSSL 0.9.5作为参考编写的。 首先,您需要OpenSSL。 编译和安装遵循通常的方法。 值得注意的是,默认值将所有内容安装在/usr/local/ssl 。 ...

    OPenssl生成证书

    可生成CA.crt等web服务器的加密证书等,方法很详细,适合做实验用。

    使用OpenSSL生成Kubernetes证书的介绍

    测试版本为1.10,但不限于此版本,为openssl证书较为通用的方式。 所需证书 所需要的证书相关文件的说明如下: CA证书 CA证书私钥 命令:openssl genrsa -out ca.key 2048 [root@host121 k8scert]# openssl ...

    Docker 开启SSL证书加密远程链接

    Docker 开启SSL证书加密远程链接1. 使用openssl 制作证书密钥1.1. 在服务器中新建目录/etc/docker,并切换到该目录下1.2. 创建根证书RSA私钥:1.3. 创建CA证书1.4. 创建服务端私钥1.5. 创建服务端签名请求证书文件...

    openssl数据加解密及证书使用例子

    最近在做IOT项目,使用...4:通过一个例子,演示通过openssl创建root,server, client及验证 通过该文档,对密匙,证书之间的关系有一个很好的理解。同时对openssl工具有一个初步认识。文档的所有命令都是测试通过的。

    trusted:SSL 证书管理器

    用于签署证书签名请求 (CSR) 的单个根 CA 设置基于域管理用户及其权限使用私钥创建 SSL 证书基于引导程序的直观且易于使用的 GUI 用 Laravel 4 和柏林的热情构建先决条件混帐作曲家openssl php5-sqlite安装克隆包:...

    openssl:TLSSSL和加密库

    欢迎来到OpenSSL项目 OpenSSL是用于传输层安全性(TLS)协议的健壮的,商业级... 它可以用于关键参数的创建X.509证书,CSR和CRL的创建消息摘要的计算加密和解密SSL / TLS客户端和服务器测试处理S / MIME签名或加密的邮

    基于CentOS6.8镜像+OpenSSL1.1.1g通过Nginx1.14离线创建HTTPS服务

    步骤: 1、启动容器; 2、安装gcc编译环境;...7、创建证书并修改Nginx配置后从新载入配置文件; 8、验证https服务和http自动跳转。 镜像下载地址: https://hub.docker.com/repository/docker/estc/centos4https

    self-signed-ssl:使用OpenSSL生成自签名TLS证书

    自签名TLS该脚本可简化使用OpenSSL创建证书颁发机构和自签名TLS证书的过程。用法self-signed-tls [OPTIONS]self-signed-tls --trust -c US -s California -l 'Los Angeles' -o 'Example Org' -u 'Example Unit'self-...

    node-ssl-self-signed-certificate:用于开发的自签名 SSL 证书

    ssl-自签名证书 用于开发的自签名 SSL 证书 var signCertificate = require ( 'ssl-self-signed-certificate' ) ; signCertificate ( 'my-passphrase' , function ( err ) { // Generated files // ./localhost....

Global site tag (gtag.js) - Google Analytics