关于从证书认证机构申请的证书的使用

       近日一个项目上客户方要求使用https来进行传输的加密,然后客户方一个也不懂技术的负责人直接丢过来一个证书的压缩包,包含了:CA.cer、服务器证书.cer、中级CA.cer、***cn.key 、***.cn.csr、csr.txt、私钥.txt 等一堆文件,因为之前https证书只是试验的时候通过自建CA服务器和在tomcat上通过java生成key进行试验过,线上使用还是第一次,然后里面还没有个说明(其实,事后接触一次以后发现使用挺简单,说明可有可无),这里记录一下,留待以后再有使用的时候可以返过来参考,因为项目管理比较严格,不适宜截图,以下内容都为文字介绍。

      关于SSL的介绍接这些证书格式的介绍可以参考博客:https://www.cnblogs.com/guogangj/p/4118605.html  

      对于证书的生成及使用流程大概描述一下:

      通过证书提供机构的CSR生成工具来生成csr证书请求,生成以后会有一个csr文件和一个key文件生成(基本都是图形化操作,过程不再介绍),需要保存好这俩文件。当然,如果不使用证书提供机构的csr工具来生成的话,也可以使用openssl工具和java的keytool来进行生成。

      参考链接(之前测试的时候做的,比较粗糙):https://blog.csdn.net/woshiji594167/article/details/79696003  ;

      然后将生成的csr证书请求发送给证书提供机构,证书提供机构会根据申请的类型进行相应的审核,然后审核通过后会将相应的签名证书发送给申请者(是需要审核通过之后,登陆证书提供机构的网站进行下载的);

     此时下载的证书包中即包含以上片头列出来的证书:CA.cer、服务器证书.cer、中级CA.cer 。。。

     剩下的步骤就是需要将证书配置到web服务器或者应用中间件,具体如下:

Apache配置:

打开apache安装目录下conf目录中的httpd.conf文件,查找“LoadModule ssl_module”如下:
 #LoadModule ssl_module modules/mod_ssl.so 
#Include conf/extra/httpd_ssl.conf   
 删除行首的配置语句注释符号“#” 
 保存退出。
 
 打开apache安装目录下conf/extra目录中的httpd_ssl.conf(或conf目录中的ssl.conf)文件  
 在配置文件的 …… 之间添加或编辑如下配置项

 SSLProtocol all -SSLv2 -SSLv3
 SSLHonorCipherOrder on
 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
 SSLCertificateFile conf/server.crt         将服务器证书配置到该路径下  
 SSLCertificateKeyFile conf/**.cn.key    将服务器证书私钥配置到该路径下  
 

然后配置一个virtualHost,注释掉文件中的virtualHost标签对

 保存退出,并重启Apache  
 通过https方式访问您的站点,测试站点证书的安装配置。  

Nginx配置:

  server { 
        listen       443; 
        server_name  localhost; 
        ssl                  on; 
        ssl_certificate      server.pem; 
        ssl_certificate_key  server.key; 
        ssl_session_timeout  5m; 
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
#启用TLS1.1、TLS1.2要求OpenSSL1.0.1及以上版本,若您的OpenSSL版本低于要求,请使用 ssl_protocols TLSv1;
        ssl_ciphers  HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 
        ssl_prefer_server_ciphers   on; 
        location / { 
            root   html; 
            index  index.html index.htm; 
        } 
    } 
保存退出,并重启Nginx。  

Tomcat配置:

tomcat配置涉及到需要将证书格式进行转换(tomcat不能直接使用cer证书,需要转换为jks证书),一般证书提供机构官网也提供此种工具:需要提供服务器证书和私钥文件,若有私钥文件还需要提供私钥密码,然后还需要设置转出以后的证书密码。 当然也可以使用java的keytool工具进行生成转换。具体可以参考:https://www.chinassl.net/ssltools/keytool-commands.html

使用keytool工具列出**.cn.jks的内容(keytool位于jdk的bin目录下,若未设置环境变量需要使用命令的绝对路径):

keytool -list -keystore /asop/soft/**.cn.jks -storepass password

此时可以看到jks里面已经有了一个证书信息(server.cer的证书内容已经通过证书格式转换的时候导入进来了),此时还需要将中级CA证书的内容导入进jks证书中:

keytool -import -alias ca1 -keystore /asop/**.cn.jks -trustcacerts -storepass password -file /asop/soft/zhongjica.cer -noprompt

将jks证书移动到tomcat的conf下。

修改tomcat的conf/server.xml文件中的https连接器信息

  <Connector protocol="org.apache.coyote.http11.Http11Protocol"
                   port="443" SSLEnabled="true"
                   maxThreads="150" scheme="https" secure="true"
               keystoreFile="conf\keystore.jks" keystorePass="password"
               clientAuth="false" sslProtocol="TLS"
 ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"  />

然后重新启动tomcat,访问443端口来访问应用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章