OpenSSL简单命令及Tomcat配置SSL证书

查看支持的子命令:
openssl ?
SSL 密码组合列表:
openssl ciphers
测试密码算法速度
测试所有算法速度:
openssl speed
测试 RSA 速度:
openssl speed rsa
测试 DES 速度:
openssl speed des
加密文件:
openssl enc -e -rc4 -in 1.key -out 1.key.enc
解密文件:
openssl enc -d -rc4 -in 1.key.enc -out 1.key.dec
计算 Hash 值
计算文件的 MD5 值:
openssl md5 –out md5.txt file.txt
计算文件的 SHA1 值:
openssl sha1 -out sha1.txt file.txt

1、生成一个密钥:
genrsa -out test.key 1024
生成出来的文件是包含了公钥和密钥两部分的,即该文件即可以用于加密也可以用于解密 。这样的话也会很不安全,一旦服务器被入侵,别人就可以通过备份脚本找到key文件,并利用该文件进行解密。
所以更好的方法是将公钥从中剥离出来,用于加密(仅能用来加密,无法用来解密 ),另外的一个文件(包含 公钥和私钥的文件)进行解密 。
2、提取公钥
rsa -in test.key -pubout -out test_pub.key
#其中test_pub.key为公钥文件,test.key即有公钥也有私钥
3、利用公钥加密文件
rsautl -encrypt -in hello -inkey test_pub.key -pubin -out hello.en
此处利用公钥加密了hello文件,并输出为hello.en ,-in指定要加密的文件,-inkey指定密钥,-pubin表明是用纯公钥文件加密,-out为加密后的文件。
4、利用私钥进行解密
rsautl -decrypt -in hello.en -inkey test.key -out hello
使用证书的方式加密文件或文件夹
证书加密方式同密钥方式类似 ,不过是又在密钥的基础上又新增了一层加密,更加增加了确解的难度,使逆方法或反向解密的几率为0 。具体做法如下:
1、通过dsa或rsa算法生成私钥
#采用DSA算法
dsaparam -noout -out dsakey0.pem -genkey 1024
#采用RSA算法
genrsa -out rsakey0.pem 1024
2、通过私钥文件生成证书及操作证书
#产生DSA算法的证书
req -x509 -key dsakey0.pem -days 365 -out mycert-dsa.pem -new
#产生RSA算法的证书
req -x509 -key rsakey0.pem -days 365 -out mycert-rsa.pem –new
#查看证书内容
x509 –in mycert-rsa.pem –noout –text
#把PEM格式的证书转化成DER格式
x509 -in cert.pem -inform PEM -out cert.der -outform DER
#把一个证书转化成CSR
x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem
#给一个CSR进行处理,颁发字签名证书,增加CA扩展项
x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem
#给一个CSR签名,增加用户证书扩展项
x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial

3、使用证书加密文件
smime -encrypt -in test.txt -out etest.txt mycert-rsa.pem
4、使用私钥进行解密
smime -decrypt -in etest.txt -inkey rsakey0.pem -out dtest.txt

1> enc 实现对称加密
支持的算法:3des,aes,blowfish,twofish
常用选项:
-in filename:指明需要加密的文件
-outfilename:知名密文输出的文件
-salt:加密时加一点杂质
-e :加密数据
-d :解密数据
-des3… :指明加密算法
-a :使用base64,base64基于64个可打印字符来表示二进制数据。如无此项,加密密文
是乱码
例如:
加密
~]# enc -e -des3 -a -salt -in test -out test.crypt
解密
~]# enc -d -des3 -a -salt -out test -in test.crypt

2> dgst 实现单向加密
dgst命令: openssl dgst -md5 /PATH/TO/SOMRFILE
此处-md5为单向加密算法,此外还有-md2,-md4,-rmd160,-sha,-sha1
3> passwd 生成用户密码
passwd -1-salt SALT
-1:表示MD5算法,目前仅支持md5算法
-salt SALT:SLAT是杂质,一般是随机数。
例如:
~]# passwd -1 -salt rand.txt 950420 或者 passwd -1 -salt rand.txt –in file.txt
此处说明生成随机数的方法
rand -hex NUM 即可生成一个16进制字符串
例如:
~]# rand -hex 4

(一)生成CA证书
1.创建私钥:
genrsa -out cakey.pem 1024
2.创建证书请求:
req -new -out ca-req.csr -key cakey.pem


Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:BJ
Locality Name (eg, city) []:BJ
Organization Name (eg, company) [Internet Widgits PtyLtd]:ple
Organizational Unit Name (eg, section) []:live
Common Name (eg, YOUR name) []:root
Email Address []:
Please enter the following ‘extra’ attributes to be sent with your certificate request A challenge password []:
An optional company name []:
3.自签署证书:
x509 -req -in careq.csr -out cacert.pem -signkey cakey.pem -days3650
4.将证书导出成浏览器支持的.p12格式:
pkcs12 -export -clcerts -in cacert.pem -inkey cakey.pem -out ca.p12
密码:passca
(二)生成server证书
1.创建私钥:
genrsa -out server-key.pem 1024
2.创建证书请求:
req -new -out servereq.csr -key serverkey.pem


Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:BJ
Locality Name (eg, city) []:BJ
Organization Name (eg, company) [Internet Widgits PtyLtd]:ple
Organizational Unit Name (eg, section) []:live
Common Name (eg, YOUR name) []:localhost
注释:一定要写服务器所在的ip地址//红色这里是本机测试,所以我写localhost
Email Address []:
Please enter the following ‘extra’ attributes to be sent with your certificate request A challenge password []:
An optional company name []:
3.自签署证书:
x509 -req -in serverreq.csr -out server.pem –signkey serverkey.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial -days 3650
4.将证书导出成浏览器支持的.p12格式:
pkcs12 -export -clcerts -in servercert.pem -inkey serverkey.pem –out server.p12
密码:passca
(三)生成client证书
1.创建私钥:
genrsa -out clientkey.pem 1024
2.创建证书请求:
req -new -out client.csr -key clientkey.pem


Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:BJ
Locality Name (eg, city) []:BJ
Organization Name (eg, company) [Internet Widgits PtyLtd]:ple
Organizational Unit Name (eg, section) []:live
Common Name (eg, YOUR name) []:client
Email Address []:
Please enter the following ‘extra’ attributes to be sent with your certificate request A challenge password []:
An optional company name []:
3.自签署证书:
x509 -req -in client.csr -out client.pem –signkey client.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial –days 3650
密码:passca
4. 生成客户端证书导出成浏览器支持的.p12格式(用于导入浏览器):
pkcs12 -export -clcerts -in cacert.pem -inkey cakey.pem –out client.p12
密码:passca
(四)根据ca证书生成jks文件
keytool -keystore truststore.jks -keypass 222222-storepass 222222 -alias ca -import –trustcacerts -file cacert.pem
(五)配置tomcat ssl 修改conf/server.xml。配置如下,一般是注释,自己手动打开注释就好了。xml 代码:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="server.p12" 
                keystorePass="950420" 
                keystoreType="PKCS12"               
                truststoreFile="truststore.jks" 
                truststorePass="222222" 
                truststoreType="JKS"               
               SSLCertificateFile="E://openssl-1.0.2o//out32dll//test//ca//serverCert.pem"                
               SSLCertificateKeyFile="E://openssl-1.0.2o//out32dll//test//ca//serverKey.pem" 
               />     

(六)测试TomcatSSL
这样启动Tomcat,用IE访问https://localhost:8443/,显示的是如下页面,提示是不安全的。

OpenSSL简单命令及Tomcat配置SSL证书_第1张图片

然后将server.p12 和truststore.jks放到Tomcat目录下,
将ca.p12,client.p12分别导入到IE中去(打开IE->;Internet选项->内容->证书)。
ca.p12导入至受信任的根证书颁发机构,client.p12导入至个人。
这样启动Tomcat,用IE访问https://localhost:8443/
OpenSSL简单命令及Tomcat配置SSL证书_第2张图片

你可能感兴趣的:(OpenSSL)