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控制台 ,点击页面左端所属域下的:环境>>服务器>> 点击所属服务器进行编辑,在常规选项卡中作如下配置,如图(注意红色区域):
[img]/admin/blogs/7.jpg" alt="图7[/img]
2. 切换到私钥库选项卡
[img]/admin/blogs/8.jpg" alt="图8[/img]
注:1.密钥库选择“自定义标识和自定义信任”
2.密钥库的位置可以用绝对路径也可以用相对路径
3.密码就是我们在数字证书部分的密码
3. 切换到SSL选项卡
[img]/admin/blogs/9.jpg" alt="图9[/img]
注意那个私钥别名,就是我们在数字证书部分指定的server私钥的那个别名
好了,保存设置后重启就可以了。访问https://localhost:7002/试一下吧。
终于写完了,以前老是在javaeye中看别人的文章,还老挑毛病,今天第一次写博客,没想到这么累啊,实在是不会贴图,搞了半天都不行,还是直接传附件吧!
这次算是投石问路吧,好的话下周再写一下利用cxf建立SSL的webservice(数字证书以及鉴权机制)。
相关推荐
**OpenSSL创建证书** 1. **安装OpenSSL**:虽然在描述中提到无需再下载和配置OpenSSL环境,但在实际操作中,你需要先下载适用于Windows的OpenSSL版本并安装。可以从官方网站或者其他可信源获取安装包。 2. **生成...
使用OpenSSL工具可以生成SSL证书。具体步骤如下: 1. 生成私钥(Key):使用OpenSSL的genrsa命令,可以生成RSA私钥。例如: ``` openssl genrsa -des3 -out server.key 2048 ``` 这条命令会生成一个2048位的RSA...
总结来说,OpenSSL 提供了生成和管理SSL证书的全套工具,通过创建CA证书、服务器证书和客户端证书,我们可以实现SSL单向认证和双向认证,从而确保网络通信的安全。理解并熟练运用这些命令,对于任何需要处理加密通信...
3. 创建自签名证书,使用`openssl x509`命令: ``` openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt ``` 这将基于你的私钥和CSR生成一个有效期为365天的自签名证书,保存在...
### 使用OpenSSL为Apache生成SSL证书 #### 一、引言 随着互联网技术的发展与用户对数据安全意识的提升,HTTPS协议已经成为网站标配之一。HTTPS不仅能够加密传输数据,还能验证服务器身份,确保用户访问的是真实...
本文将详细介绍如何使用openssl工具生成单向SSL证书,以及如何将其应用于基于Boost.Asio库的SSL通讯测试。 首先,让我们了解什么是单向SSL认证。在单向SSL认证中,服务器验证其身份给客户端,但客户端无需向服务器...
本篇文章将深入探讨如何使用开源工具OpenSSL来制作CSR(Certificate Signing Request)文件,这是申请SSL证书的第一步。 首先,了解OpenSSL。OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用...
**OpenSSL SSL 加密证书详解** 在网络安全领域,OpenSSL 是一个强大的安全套接层 (SSL) 和传输层安全 (TLS) 工具包,它提供了各种加密算法、证书管理和服务器/客户端实现。SSL/TLS 协议是互联网上广泛采用的安全...
3. 使用OpenSSL生成本地SSL证书步骤: - 安装OpenSSL:根据你的操作系统下载并安装OpenSSL。 - 创建私钥:使用`openssl genpkey`命令生成RSA或ECDSA私钥。 - 创建证书请求:使用`openssl req`命令创建证书请求,...
5. **命令行工具**:OpenSSL 带有一系列命令行工具,如 `openssl s_client` 和 `openssl s_server`,可以用于测试 SSL/TLS 连接,`openssl req` 用于生成 CSR,`openssl x509` 用于处理证书等。 **二、自签操作** ...
本文档分为几个部分:安装OpenSSL、创建证书、WebLogic环境的SSL配置,以及HTTPS验证。 ### 一、安装OpenSSL #### 1.1 解压并配置OpenSSL 使用具有相应权限的用户(如`tvbs`)进入`/home/tvbs/tool_source`目录,...
首先,我们需要生成自签名SSL证书。这通常包括以下步骤: 1. **生成RSA密钥**:使用`openssl genrsa`命令创建一个带有密码保护的RSA私钥。例如,`openssl genrsa -des3 -out domain.key 1024`将生成一个1024位的...
服务器端需要配置SSL证书和密钥,客户端则需要信任服务器的证书。在OpenSSL命令行工具中,我们可以使用`s_server`和`s_client`模拟服务器和客户端进行SSL通信: - 启动模拟服务器:`openssl s_server -accept 4433 ...
本文将深入探讨如何利用Prometheus监控K8S主机上的SSL证书资源,并介绍一个名为`prometheus-ssl-exporter`的镜像文件,它有助于提取和暴露SSL证书的相关信息。 首先,理解SSL证书对于K8S的重要性至关重要。SSL...
本教程将深入探讨如何利用开源工具openssl创建自定义的证书颁发机构(CA),并实现将CA证书安装到浏览器的受信任根证书存储区,以供自定义网络服务使用。 首先,我们需要了解openssl工具。OpenSSL是一个强大的安全...
总之,通过Linux系统和openssl工具,我们可以自行创建并签署SSL证书,实现局域网内的HTTPS通信,同时解决浏览器对于主题备用名称(SAN)缺失的警告。这个过程不仅适用于nginx,也可以应用于其他支持SSL的服务器软件...
OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)密码库,它包含了各种加密算法和实用工具,其中包括生成X509证书的能力。在这个"Openssl证书创建脚本"中,我们将探讨如何使用OpenSSL工具和提供的配置文件...
本文将深入讲解如何使用OpenSSL创建自己的CA(Certificate Authority)并签发证书,以及构建多级CA的实践过程。 首先,让我们了解什么是CA。CA是数字证书的颁发机构,它负责验证请求证书的实体身份,并为其签发具有...
1. **生成证书**:使用 `openssl req` 和 `openssl x509` 命令可以创建自签名的证书,这对于测试环境或者个人站点非常实用。 2. **证书签名请求**:`openssl req` 可以生成证书签名请求(CSR),然后可以将其发送给...