1.创建CA的私钥 1.创建CA的私钥
执行以下命令opensslgenrsa -des3 -out mykey/ca.key 1024 ( mykey/ 当前目录下的mykey目录,事先要建立好)
接下来会提示你输入密码.
2.创建CA证书 (根证书)
openssl req -new -x509 -key mykey/ca.key -out mykey/ca.crt -days 365
x509是一种加密的标准,-out是指输出的文件路径,-key是指定私钥,也就是上一步生成的那个,-days是指证书有效期。
注:再输入commonname时你可以指定你自己的名字,但是不能输入你的服务器名(www.XX.X.com)
3.创建server端的私钥
因为咱们是要在server端提供SSL的webservice,所以在server端需要使用私钥库和信任库。
openssl genrsa -des3 -out mykey/server.key1024
4.创建server证书签名请求
我们可以发送签名请求到一个官方的CA机构,这些机构都是要收费的,而且还要严格审核,至于我们自己开发过程中的话实在是没必要。我们直接发送到我们刚才通过openssl构建的CA就可以了。
openssl req -new -key mykey/server.key-out mykey/server.csr
注意这里的commonname,此处填写你的服务器的ip或者域名,例如localhost,也就是你要为哪台服务器做证书就指定那台机器。
5.CA签署server证书
如果是第一次通过CA签署证书的话,执行如下命令
openssl x509 -req -days 30 -in mykey/server.csr-CA mykey/ca.crt -CAkey mykey/ca.key -CAcreateserial -out mykey/server.crt
其中的-CAcreateserial是指创建一个新的序列文件。这样openssl会在当前目录下创建一个名为ca.srl的文件存储序列号(官方是这样说的,我本地产生的序列文件是.srl,搞不清怎么回事,可能是创建时没指定名字吧,不过不影响后面的操作)。下次再次签署证书时就可以直接指定这个序列文件了。命令如下:openssl x509 -req -days 30 -in mykey/server.csr -CA mykey/ca.crt -CAkey mykey/ca.key-CAserial mykey/ca.srl -out mykey/server.crt
输入CA私钥的密码后签署成功。
6.创建server端的pkcs12文件
openssl pkcs12 -export -in mykey/server.crt-inkey mykey/server.key -out mykey/server.p12 -name demo_server
注意其中的-namedemo_server,这个是指定keystore的别名,记下来,很重要哦(weblogic要用到)。
7.转换pkcs12为JKS keystore文件
这个过程需要用到jetty.jar,下载相应jar后添加到classpath),然后执行如下命令
java org.mortbay.util.PKCS12Import mykey/server.p12 mykey/server.jks
如果不添加到classpath,则执行:
java -cp org.mortbay.jetty.jarorg.mortbay.util.PKCS12Import mykey/server.p12 mykey/server.jks
在此处输入上一步设置到export password。
Server端相关文件就完成了,现在可以用java的keytool命令查看一下生成的server.jks的内容
keytool -v -list -keystore mykey/server.jks
接下来开始准备client端的相关文件,如果server和client相互认证,客户端的相关操作与server端类似,不做过多说明。
8.创建client端的私钥
openssl req -new -newkey rsa:1024 -nodes -out mykey/client.req -keyout mykey/client.key
9.创建client端证书签名请求
openssl x509 -CA mykey/ca.crt -CAkey mykey/ca.key -CAserial mykey/ca.srl -req-in mykey/client.req -out mykey/client.pem -days 365
10.创建client端的pkcs12文件
openssl pkcs12 -export -clcerts -in mykey/client.pem -inkey mykey/client.key -out mykey/client.p12
11.创建client端的jks文件
java org.mortbay.util.PKCS12Import mykey/client.p12 mykey/client.jks
12.创建信任密钥库
这次用到java的keytool命令
keytool -genkey -alias dummy -keyalg RSA -keystore mykey/truststore.jks
到此为止数字证书的部分就完成了,下面介绍一下tomcat如何配置ssl支持。
13.将CA认证过的证书导入信任库
keytool -import -v -trustcacerts-alias my_ca -file mykey/ca.crt -keystore mykey/truststore.jks
通过下面的命令可以查看信任库的详细信息
keytool -v -list -keystore mykey/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/测试一下
分享到:
相关推荐
Keytool是Java开发工具包(JDK)自带的一个命令行工具,主要用于管理密钥对和证书。通过Keytool,我们可以创建一个密钥库,其中可以存储私钥和对应的数字证书。以下是使用Keytool生成自签名证书的基本步骤: 1. ...
通过openssl制作自签三级证书,即根证书、中间证书、和服务证书。 2.添加自签证书为可信证书 3.1 win添加自签证书为可信证书 3.2 centos添加自签证书为可信证书 3.3 JDK添加自签证书为可信证书 3.证书格式...
#### 三、制作证书 ##### 1. 创建私钥 使用OpenSSL命令行工具创建私钥: ```bash openssl genrsa -out D:\SSL\openssl\ca-key.pem 1024 ``` ##### 2. 创建证书请求 创建一个证书请求文件: ```bash openssl req -...
转换过程涉及使用`keytool`命令行工具,该工具是JDK的一部分。 #### 操作步骤 - 首先,确保已经安装了JDK,并且环境变量中包含了JDK的`bin`目录。 - 使用`keytool`命令将`.cer`文件导入到`.jks`文件中: ```shell ...
在本篇文章中,我们将深入探讨如何使用Java来获取数字证书的信息,包括使用TOMCAT和JDK搭建SSL服务的过程、如何用OpenSSL签发证书以及如何支持第三方CA等内容。 #### 一、使用TOMCAT和JDK搭建SSL服务 ##### 1. ...
1、该文档执行的前提:windows、安装openssl工具、下载nginx服务器、安装jdk并配置环境变量 (压缩包 包括了openssl、nginx和相关的配置文件) 2、下载 openssl.cnf文件- 修改commonName、commonName_default、[alt_...
如果需要使用JKS格式证书,可以使用java jdk将PFX格式证书转换为JKS格式证书。命令如下: `keytool -importkeystore -srckeystore 214756945520466.pfx -destkeystore your-name.jks -srcstoretype PKCS12 -...
keytool是Java提供的命令行工具,用于管理JDK的密钥库,也可以用于生成和管理SSL证书。 **自签发CA证书** 1. 首先,你需要使用OpenSSL生成一个私钥(private key)和证书签名请求(CSR)。私钥将被用于解密通过SSL...
这通常使用JDK自带的`keytool`工具完成: 1. 生成密钥对:使用`keytool -genkey`命令创建RSA算法的密钥对。 2. 创建证书请求:通过`keytool -certreq`命令生成证书请求文件。 3. 导入服务器证书:使用`keytool -...
keytool是JDK自带的证书管理工具,可以用来生成和管理密钥对,以及导入和导出证书。 8. **Apache和Nginx配置**:Apache和Nginx都是常见的Web服务器,它们支持SSL模块,通过修改配置文件(如Apache的httpd.conf或...
同样通过`openssl genrsa`生成服务器私钥,`openssl req -new`创建CSR(Certificate Signing Request),接着使用`openssl x509`将CSR转换为SSL证书。在这个过程中,你需要提供服务器的IP地址或其他标识信息。最后,...
`keytool`是Java Development Kit (JDK) 自带的一个命令行工具,用于管理密钥对和数字证书。 首先,我们需要理解SSL/TLS证书的基础知识。SSL(Secure Socket Layer)和其后续版本TLS(Transport Layer Security)是...
- 最后,指定cacerts文件的位置(通常在JDK安装目录下的`lib/security`目录下),运行`keytool`命令,输入相应的参数(如 `-importcert`,`-keystore`,`-trustcacerts`,`-file` 和 `-alias`)进行导入。...
使用openssl工具可以将证书和私钥打包成.pfx文件,然后再使用keytool工具将.pfx文件导入到JKS密钥库中。 有时候,还需要将证书导入到JDK的默认密钥库cacerts中,以确保Java运行环境信任该证书。这通常在浏览器中...
在Java中,这个文件可以被添加到JDK的`jre/lib/security/cacerts`信任库中,通过keytool命令进行管理。 **证书链的建立:** 在实际应用中,一个证书不仅需要包含CA的签名,还可能包含其他中间CA的证书,形成一个...
keytool是JDK集成环境中的一部分,用于生成、管理和操作数字证书。常用的keytool命令有: * genkey:生成一个新的密钥对和证书。 * -alias:指定别名。 * -keystore:指定密钥库的名称。 * -keyalg:指定密钥的算法...
jdk+apache+jboss +mod_jk+openssl 软件介绍 1.JDK(Java DevelopmentKit)。Java开发工具包。大家都知道Java程序可以在绝大多数的机器上运行,不需要安装任何额外的软件,为什么我们要安装JDK呢?这是因为Java...
这需要使用JDK提供的`keytool`工具。 1. **生成初始密钥库**:使用`keytool`命令生成一个JKS文件,包含服务器的RSA密钥对和证书信息。 ``` keytool -genkey -alias serveralias -keyalg RSA -keysize 1024 -dname...
Java KeyStore文件转换为微软的.pfx文件和OpenSSL的PEM格式文件(.key + .crt) 运行方式: JKS2PFX 文件> 密码> 别名> <导出文件名> [Java Runtime的目录] Java Runtime的目录,指包含Java.exe和keytool.exe的目录...
我们需要提前准备好自签名证书,可以使用openssl生成,也可以使用jdk自带的keytool生成。Windows操作系统可能没有openssl,可能需要先安装一个openssl的window版本。 自签名证书用于和服务端表明客户端的身份以及对...