linux下使用openssl生成自签名,配置单向认证,实现https加密请求的方法

匿名 (未验证) 提交于 2019-12-02 21:59:42

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/80830959
本文出自【我是干勾鱼的博客

我们都知道http请求是明文传输,也就意味着数据交互传输是不安全的,极有可能被截获,也有可能被篡改,使用https请求已经是一个大趋势了。今天就来讲讲通过自签名自己实现https请求的实现方法。

Ingredient:

这里为什么还要使用jdk呢?是因为服务器端经过ca认证的证书,即“crt”类型的文件,生成出来之后,还要在使用openssl命令对其生成一个p12文件,然后就是要使用jdk的“keytool”命令针对这个“p12”类型的文件生成一个keystore类型的文件,此文件是服务器端存放证书的容器。在tomcat的:

{tomcat}/conf/server.xml

文件中,要配置好这个keystore类型文件的位置,因为tomcat在启动时会引用这个文件。

创建生成证书的文件夹并进入:

mkdir -p /opt/keys/test cd /opt/keys/test/
openssl genrsa -des3 -out ca.key 2048

openssl req -new -x509 -days 7305 -key ca.key -out ca.crt

openssl genrsa -des3 -out www.test.com.pem 1024
openssl req -new -key www.test.com.pem -out www.test.com.csr

在common name中填入服务器的域名,如www.test.com即可生成改站点的证书,当然也可以使用泛域名如*.test.com来生成所有二级域名可用的网站证书

openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in www.test.com.csr -out www.test.com.crt

这里“-days 1460”表示生成证书为期1460天(4年)。

openssl pkcs12 -export -in ./www.test.com.crt -inkey ./www.test.com.pem -out ./www.test.com.p12 -name "server"

生成一个keystore类型的文件“www.test.com.keystore”,并将.p12类型的文件导入到里面

keytool -importkeystore -v -srckeystore www.test.com.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore www.test.com.keystore -deststoretype jks -deststorepass 123456

这里:

  • srcstorepass后面的123456Ϊwww.test.com.p12的密码
  • deststorepass后面的123456Ϊwww.test.com.keyStore的密码

对于服务器端(这里就是tomcat了)的单向认证,需要这两个文件:

  • ca.crt:客户端使用的CA根证书
  • www.test.com.keystore:服务端证书存放的容器

首先将:

www.test.com.keystore

放置在服务器的一个合适的位置,这里仍将它放在:

/opt/keys/test/

目录下。

这里需要配置tomcat的server.xml文件,打开tomcat的:

{tomcat}/conf/server.xml

文件,将原有的改为:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"                maxThreads="150" SSLEnabled="true" scheme="https" secure="true"                keystoreFile="/opt/keys/test/www.test.com.keystore"                keystorePass="123456"                clientAuth="false" sslEnabledProtocols="TLSv1.2"                ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,                                TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,                                TLS_RSA_WITH_AES_128_CBC_SHA256,                                TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,                                TLS_RSA_WITH_3DES_EDE_CBC_SHA,                                TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />

将tomcat服务器启动。

可以直接访问域名:

https://www.test.com:8443/

或者配置了hosts文件:

192.168.12.3 www.test.com

之后在访问这个域名。

也可以直接访问ip:

https://192.168.12.3:8443/

注意这里浏览器会自动到服务器下载这个经过CA签名的证书,但是因为不是正式的CA机构颁发的,所以浏览器会任务这个证书是不安全的,如图所示:

如果使用正式CA机构认证的证书,这里就会是安全的提示了。

不过虽然标注为“不安全”,但是数据传输也都是经过了加密处理的,直接抓包是看不到明文信息的,也就达到了https请求的目的了。

为nginx配置https并自签名证书

linux下Tomcat+OpenSSL配置单向&双向认证(自制证书)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!