zoukankan      html  css  js  c++  java
  • OpenSSL生成证书

    x509证书链
    x509证书一般会用到三类文件,key,csr,crt。
    Key 是私用密钥,openssl格式,通常是rsa算法。
    csr是证书请求文件,用于申请证书。在制作csr文件的时候,必须使用自己的私钥来签署申请,还可以设定一个密钥。
    crt是CA认证后的证书文件(windows下面的csr,其实是crt),签署人用自己的key给你签署的凭证。

    1.    key的生成

    openssl genrsa -des3 -out server.key 2048

    这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key:

        openssl rsa -in server.key -out server.key

    server.key就是没有密码的版本了。

    2. 生成CA的crt
    openssl req -new -x509 -key server.key -out ca.crt -days 3650
     生成的ca.crt文件是用来签署下面的server.csr文件。

    3.    csr的生成方法:

    openssl req -new -key server.key -out server.csr

    需要依次输入国家,地区,组织,email。最重要的是,有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。

    4.    crt生成方法
    CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.

    openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
        输入key的密钥后,完成证书生成。-CA选项指明用于被签名的csr证书,-CAkey选项指明用于签名的密钥。-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成。
    最后生成了私用密钥:server.key和自己认证的SSL证书:server.crt



    tomcat实现SSL认证
    按照以上方法证书生成后,我们再配置tomcat。首先将以上创建的证书server.crt拷贝到tomcat主目录下的conf文件夹下。
     
    1. 创建服务器信任的CA证书库:
    把server.crt证书导入信任证书库,命令行模式进入tomcat主目录下的conf目录,执行以下命令:
    keytool -keystore truststore.jks -keypass 111111 -storepass 111111 -alias ca -import -trustcacerts -file server.crt
     
    可以用以下命令查看信任证书库内容:
    keytool -keystore truststore.jks -keypass 111111 -storepass 111111 -list -v
     
    2. 配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书):
    修改tomcat的conf目录里的server.xml文件($TOMCAT_HOME/conf/server.xml),找到类似下面内容的配置处,添加配置如下:
       
    <Connector port="8443" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" debug="0" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/tomcat.p12" keystorePass="111111" keystoreType="PKCS12"
     truststoreFile="conf/truststore.jks" truststorePass="111111" truststoreType="JKS" />

     
    其中,clientAuth指定是否需要验证客户端证书,如果该设置为“false”,则为单向SSL验证,SSL配置可到此结束。如果clientAuth设置为“true”,表示强制双向SSL验证,必须验证客户端证书,但服务器不会颁发证书必须由客户端导入。如果clientAuth设置为“want”,则表示可以验证客户端证书,但如果客户端没有有效证书,也不强制验证。
    注意:浏览器的高级选型中要启用TLS加密方式。


  • 相关阅读:
    【BZOJ4945&&UOJ317】游戏(2-sat,拓扑序)
    【Hihocoder1636】Pangu and Stones(区间DP)
    【BZOJ1579】Revamping Trails(分层图,最短路,堆)
    【NOIP2017】逛公园(最短路图,拓扑排序,计数DP)
    【HDOJ6218】Bridge(线段树,set,网格图,连通性)
    【BZOJ1018】堵塞的交通traffic(线段树,网格图,连通性)
    【HDOJ6217】BBP Formula(公式)
    【HDOJ6224】Legends of the Three Kingdoms(概率DP)
    152.图论
    151.函数
  • 原文地址:https://www.cnblogs.com/tonykan/p/3508139.html
Copyright © 2011-2022 走看看