openSSL

  • Post author:
  • Post category:其他


OpenSSL的核心的本质在于可以由用户自己来进行证书的签发,自定义证书是不被谷歌支持的,要想玩自定义证书就要通过火狐浏览器。

OpenSSL简介

为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其他目的使用。

通过在一定范围内部署一台CA(Certificate Authority)服务器(

CA就是认证授权服务器

),可以实现局域网内的证书认证和授权,保证数据传输的安全性;也可以通过具体的部署实践,了解国际上大型CA机构的工作原理,为企业级的证书管理提供知识积累。

OpenSSL套件的组成部分有:

  • libcrypo:通用功能的加密库
  • libssl:用于实现TSL/SSL功能的库
  • openssl

image

  1. 企业向CA认证中心发送请求,CA可以处理请求和吊销不要的证书。而后CA会给企业发送一个已签署的证书(可以理解为服务器证书),表示该企业的站点已经加入到CA的处理列表中,能够保证安全操作。
  2. 而后企业可以把服务器证书发送给个人,个人之间如果要想通讯,需要通过证书进行互相的通讯,所以必须得到彼此的证书。帧数都是由进行统一认证和管理的。
  3. 当证书失效之后,将进入吊销列表

整个CA的处理流程也就是整个OpenSSL的处理流程,也就是说在整个OpenSSL流程中所有的操作模式都会按照标准的CA结构完成,需要生成一系列的层级证书(所有的证书一定是逐步向下签发的)。

如果要想认可根证书,就必须把证书放到浏览器上,因为所有用户的操作都需要进行CA认证。

证书签发

证书签发顺序:由右向左

image

整个生成完毕之后还需要将证书转换为Java可以使用的证书格式,而后才可以在Tomcat中进行配置。

1. 证书签发流程

在Linux系统里面已经集成了OpenSSL组件:

image

本次的开发为了方便的进行证书的下载,直接将所有的证书就生成在ftp指定的目录下(/srv/ftp)

(1)签发根证书

本次生成的证书为根证书,那么将根证书保存在“/srv/ftp/cas”目录之中。

image

  1. 生成CA密钥对:生成一个使用RSA编码的密钥信息,而后生成的文件保存到“/srv/ftp/cas/cakey.pem”,该密钥对的长度为2048个字节。

  2. 生成根证书的签发申请:在证书访问的时候必须以域名的形式出现(千万不要使用ip),这个域名应该是你自己的。现在如果要进行本机的模拟,那么需要通过windows下的hosts进行修改。这里

    -subj /CN=cas.com

    指定了我们最后要访问的域名就是cas.com。

    image

  3. 根证书签发:

    -day 3650

    指定了证书的有效时间为十年

    image

(2)签发服务器端证书



为了与根证书的保存区分,建议建立一个目录:/srv/ftp/cas/server。

image

流程跟之前一样,但是服务器证书必须依靠CA根证书完成。

  1. 生成服务器私钥:服务器端生成私钥的时候需要设置一个密码,密码为:mldnjava。
  2. 生成服依然需要输入务器端证书的签发申请,创建的时候依然需要输入之前的密码。
  3. 生成服务器端证书的签发申请,有效期为10年。从命令可以看到客户端证书生成的时候需要用到CA根证书(ca.cer)。

此时有了服务器端的证书之后才可以创建客户端证书。

(3)签发客户端端证书

建立一个目录保存客户端证书信息:/srv/ftp/cas/client。

image

  1. 生成客户端私钥:生成的时候输入密码:mldnjava。
  2. 生成客户端的证书申请
  3. 生成客户端的签发证书:从命令可以看到客户端证书生成的时候需要用到CA根证书(ca.cer)

此时最需要注意的是,该证书只针对于“cas.com”有效

(4)签发Java证书

现在使用了OpenSSL生成的数字证书和私钥,如果要想在Java的环境下使用,需要将其转换为“PKCS#12”的编码格式的密钥文件才可以被Java的keytool工具所管理。

前提:此时Java端的证书由于需要在Tomcat上使用,那么最终的证书建议在Tomcat的目录中保存,而Tomcat的路径为“/usr/local/tomcat”。

image

  1. 生成客户端证书:客户端的证书随后是需要发给客户端浏览器的。
  2. 生成服务器端证书:主要由Tomcat使用。
  3. 将现在生成的服务器端证书导入到本机的受信认证证书,可以看到这个证书存到了/usr/local/tomcat目录下了。那么此时JDK就表示当前要使用的证书已经得到了认可。
  4. 查看所有的证书信息:

image

随后还需要在客户端进行证书的配置。

2. Tomcat配置HTTPS

Tomcat本身支持https访问的协议处理,当然如果要想进行https的访问,那么一定要有与之匹配的服务器证书。我们已经生成了Java能够匹配认证证书ca-trust.p12,那么我们就用这个证书来处理。

本配置分为两种情况:单向认证、双向认证。

(1)Tomcat单向认证

所谓的单向认证指的是只是在服务器端提供有一个公共的证书,所有客户端连接之后都可以获得这个公钥,加密后,服务器端可以利用私钥进行解密处理。这是一个比较常见的做法,因为你不可能为每一个客户端去配置一个自己的密钥对。


【配置流程】

  1. 打开Tomcat的配置文件:/usr/local/tomcat/conf/server.xml,在这个配置文件里面要追加下面的配置信息:

image

  • 443端口是HTTPS的访问端口;
  • 单向认证clientAuth设置为”false”;
  1. 启动Tomcat服务器
/usr/local/tomcat/bin/catalina.sh start
  1. 浏览器访问https

客户端上现在根本就无法使用google的浏览器进行访问。当然如果现在不进行任何的配置,任何的浏览器都无法访问。

image

如果要想访问则需要将ca根证书配置到浏览器之中,同时还需要为整个的访问添加域名(cas.com)。

  1. 将ca.cer的根证书配置到浏览器的可信任证书上
  • 4.1 谷歌浏览器——>“选项”——>“高级”——>“证书”——>“查看证书”——>“证书机构”——>“导入”

image

image

image

  • 4.2 这个根证书只对cas.com有效,所以要修改host文件,配置cas.com的映射
192.168.122.203 cas.com
  1. 浏览器重新启动后,输入:

    https://cas.com

出现了绿色的锁就表示现在我的是合法的https访问处理。

image

(2)Tomcat双向认证

单向认证对一般的服务器处理可以,但是要做网银的话就必须双向认证。

如果是双向认证你必须配置客户端证书(client.p12)。

image


【配置流程】

  1. 修改Tomcat的配置文件:/usr/local/tomcat/conf/server.xml,在这个配置文件里面要追加下面的配置信息:

image

  1. 启动Tomcat服务器
  2. 配置完host之后,浏览器访问https

此时访问浏览器会发现如下错误,根本访问不了。

image

所以需要在客户端浏览器上配置客户端的访问证书(client.p12):谷歌浏览器——>“选项”——>“高级”——>“证书”——>“查看证书”——>“证书机构”——>导入

client.p12

然后重新启动浏览器就可以访问了:



版权声明:本文为lvlei19911108原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。