一、安装
openssl下载地址:https://links.jianshu.com/go?to=https%3A%2F%2Foomake.com%2Fdownload%2Fopenssl
我下载的:
安装中,有一步 :选择复制到window目录还是bin目录时,选择bin
环境变量:(注意这是exe安装的环境变量,用压缩包的不同)
path:增加,
新增:
配置环境变量以后最好重启一下
二、使用
打开命令提示行(cmd.exe),----如果是win7环境需要以管理员身份运行cmd.exe(一般在C:\Windows\System32下查找到cmd.exe右建以管理员身份运行),并切换到Openssl安装目录的bin目录下
(一)CA证书
1.创建私钥:
F:\OpenSSL-Win64\bin>openssl genrsa -out f:/ca/ca-key.pem 1024
2.创建证书请求:
F:\OpenSSL-Win64\bin>openssl req -new -key f:/ca/ca-key.pem -config F:\OpenSSL-Win64\bin\cnf\openssl.cnf -out f:/ca/ca-req.csr
3.自签署证书:
F:\OpenSSL-Win64\bin>openssl x509 -req -in f:/ca/ca-req.csr -out f:/ca/ca-cert.pem -signkey f:/ca/ca-key.pem -days 365
4.将证书导出成浏览器支持的.p12格式:
F:\OpenSSL-Win64\bin>openssl pkcs12 -export -clcerts -in f:/ca/ca-cert.pem -inkey f:/ca/ca-key.pem -out f:/ca/ca.p12
(二)生成server证书
1.创建私钥:
openssl genrsa -out server/server-key.pem 1024
2.创建证书请求:
openssl req -new -out server/server-req.csr -key server/server-key.pem -config openssl.cnf
Common Name (eg, YOUR name) []:localhost 注释:一定要写服务器所在的ip地址//红色这里是本机测试,所以我写localhost
3.自签署证书:
openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkeyserver/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial-days 3650
4.将证书导出成浏览器支持的.p12格式:
openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem-out server/server.p12
(三)生成client证书
1.创建私钥:
openssl genrsa -out client/client-key.pem 1024
2.创建证书请求:
openssl req -new -out client/client-req.csr -key client/client-key.pem -config openssl.cnf
3.自签署证书:
openss lx509 -req -in client/client-req.csr -out client/client-cert.pem -signkeyclient/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial-days 3650
4.将证书导出成浏览器支持的.p12格式:
openssl pkcs12 -export -clcerts-in client/client-cert.pem -inkey client/client-key.pem -out client/client_err.p12
5. 生成客户端证书导出成浏览器支持的.p12格式(用于导入浏览器):
openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -outclient/client.p12
(四)根据ca证书生成jks文件
keytool -keystore F:/OpenSSL-Win64/bin/jks/truststore.jks -keypass 222222-storepass 222222 -alias ca -import -trustcacerts -file F:/ca/ca-cert.pem
(五)配置tomcat ssl
修改conf/server.xml。配置如下。xml 代码
maxThreads="150" scheme="https" secure="true" connectionTimeout="20000"
clientAuth="true" sslProtocol="TLS" useBodyEncodingForURI="true" enableLookups="false"
acceptorThreadCount="2" socketBuffer="18000" maxHttpHeaderSize="262144"
keystoreFile="server.p12" keystorePass="123456" keystoreType="PKCS12"
truststoreFile="truststore.jks" truststorePass="222222" truststoreType="JKS"
SSLCertificateFile="../bin/server-cert.pem"
SSLCertificateKeyFile="../bin/server-key.pem" />
这里使用到了四个文件,各个文件都是在前面的步骤中生成的。
蓝色标识的server.p12和truststore.jks这两个文件需要放在tomcat的根目录下(如C:\Venustech\TSOC\webserver)。
粉色的server-cert.pem和server-key.pem默认是放在tomcat的bin文件夹下的(如C:\Venustech\TSOC\webserver\bin)。
绿色部分为必须的,否则证书不生效。
(六)验证ssl配置是否正确
访问系统http://localhost :8443/usm。如图:
(七)导入证书
将ca/ca.p12,client/client.p12分别导入到IE中去(打开IE->;Internet选项->内容->证书)。
ca.p12导入至受信任的根证书颁发机构,client.p12导入至个人。
重新访问系统。
三、证书文件的扩展名
证书的几种文件扩展名:
• .pem: 采用 PEM 编码格式的 X.509 证书的文件扩展名;
• .der: 采用 DER 编码格式的 X.509 证书的文件扩展名;
• .crt: 即 certificate 的缩写,常见于类 UNIX 系统,有可能是 PEM 编码,也有可能是 DER 编码,但绝大多数情况下此格式证书都是采用 PEM 编码;
• .cer: 也是 certificate 的缩写,常见于 Windows 系统,同样地,可能是 PEM 编码,也可能是 DER 编码,但绝大多数情况下此格式证书都是采用 DER 编码;
• .p12: 也写作 .pfx,全称:PKCS #12,是公钥加密标准(Public Key Cryptography Standards,PKCS)系列的一种,它定义了描述个人信息交换语法(Personal Information Exchange Syntax)的标准,可以用来将包含了公钥的 X.509 证书和证书对应的私钥以及其他相关信息打包,进行交换。简单理解:一份 .p12 文件 = X.509 证书+私钥;
• .csr: Certificate Signing Request 的缩写,即证书签名请求,它并不是证书的格式,而是用于向权威证书颁发机构(Certificate Authority, CA)获得签名证书的申请,其核心内容包含一个 RSA 公钥和其他附带信息,在生成这个 .csr 申请的时候,同时也会生成一个配对 RSA 私钥,私钥通常需要严格保存于服务端,不能外泄。
• .key: 通常用来存放一个 RSA 公钥或者私钥,它并非 X.509 证书格式,编码同样可能是 PEM,也可能是 DER,查看方式如下:
1 PEM 编码格式:openssl rsa -in xxx.key -text -noout
2 DER 编码格式:openssl rsa -in xxx.key -text -noout -inform der
四、查看cer文件
在线地址: https://www.sslshopper.com/certificate-decoder.html
openssl 命令:
openssl x509部分命令
打印出证书的内容:
openssl x509 -in cert.pem -noout -text
打印出证书的系列号
openssl x509 -in cert.pem -noout -serial
打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject
以RFC2253规定的格式打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt RFC2253
在支持UTF8的终端一行过打印出证书的拥有者名字
openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb
打印出证书的MD5特征参数
openssl x509 -in cert.pem -noout -fingerprint
打印出证书的SHA特征参数
openssl x509 -sha1 -in cert.pem -noout -fingerprint
把PEM格式的证书转化成DER格式
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
把一个证书转化成CSR
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem
给一个CSR进行处理,颁发字签名证书,增加CA扩展项
openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem
给一个CSR签名,增加用户证书扩展项
openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial
查看csr文件细节:
openssl req -in my.csr -noout -text
五、SKID
SKID(证书使用者密钥标识符,subject key identifier 的简称)和 AKID(证书颁发机构密钥标识符,authority key identifier 的简称)是 X509 证书中常见的扩展字段。
查看SKID:打开证书,找到SKID,如下。