zoukankan      html  css  js  c++  java
  • ssl https双向验证的配置与证书库的生成

    1.SSL认证

    不须要特别配置,相关证书库生成看https认证中的相关部分

    2.HTTPS认证

    一、基本概念

    1.单向认证,就是传输的数据加密过了,可是不会校验client的来源 
    2.双向认证,假设client浏览器没有导入client证书,是訪问不了web系统的,找不到地址 
    假设仅仅是加密,我感觉单向即可了。 
    假设想要用系统的人没有证书就訪问不了系统的话,就採用双向

    二、server配置:

    打开Tomcat 根文件夹下的 /conf/server.xml 改动server.xml

    client证书注冊名称必须与域名一致,否则无法验证。

    比如訪问https://127.0.0.1:8443/Test必须使用名称为127.0.0.1的证书,

    訪问https://hepengfei:8443/Test必须使用名称为hepengfei的证书,

    本机中域名解析改动文件是C:/WINDOWS/system32/drivers/etc/hosts

    port号改为8443,为自己定义port    訪问https://127.0.0.1:8443/Test

    port号改为443,则为默认port    訪问https://127.0.0.1/Test

    clientAuth="true"为双向认证      clientAuth="false"为单向认证 

    使用密钥库文件和password(自己使用的证书)  

    信任密钥库文件和password(含有client证书或其根证书)

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"

    clientAuth="true" sslProtocol="TLS"

    keystoreFile="C:/Java/Tomcat/conf/keystore/server" keystorePass="080302"

    truststoreFile="C:/Java/Tomcat/conf/keystore/server/trust" truststorePass="080302" 

    />

    三、证书的生成例如以下:
    运行命令前先保证目录存在。比如:在c盘建立keystore目录
    第一步:为server生成证书 

    确定域名:本机中域名解析改动文件是C:/WINDOWS/system32/drivers/etc/hosts
    使用keytool 为 Tomcat 生成证书和密钥库,假定目标机器的域名是“ hepengfei ”, keystore 文件存放在“ C:/keystoreserver ”,口令为“ 080302 ”,命令例如以下: 
    keytool -genkey -v -keystore C:/keystore/server -alias serverkey -keyalg RSA -validity 3650 -dname "CN=hepengfei,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 080302 -keypass 080302   

    生成server.cer安装在client解决服务器信任问题:

    keytool -export -keystore C:/keystore/server -alias serverkey -file c:/keystore/server.cer -storepass 080302   

    第二步:为client生成证书 

    (注意:个人证书的生成和使用比較特别,是分开的。先生成p12文件,然后导出cer文件,再将cer文件导入默认类型的keystore(JKS)文件)
    这一步是为浏览器生成证书,以便让server来验证它。为了能将证书顺利导入至IE 和 Firefox ,证书格式应该是 PKCS12 ,因此,使用例如以下命令生成: 
    keytool -genkey -v -keystore C:/keystor/euser.p12 -alias MyPC -keyalg RSA -storetype PKCS12 -validity 3650 -dname "CN=MyPC,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 080302 -keypass 080302   

    server要信任client证书,就必须把client证书加入为server的信任认证。因为不能直接将 PKCS12 格式的证书库导入,我们必须先把client证书导出为一个单独的 CER 文件,使用例如以下命令: 

    keytool -export -alias MyPC -keystore C:/keystore/user.p12 -storetype PKCS12 -storepass 080302 -rfc -file C:/keystore/user.cer   

    接着,将C:user.cer导入到server的证书库,加入为一个信任证书: 

    keytool -import -v -file C:/keystore/user.cer -keystore c:/keystore/servertrust -alias user -storepass 080302  

    输入“是”确认完毕。
    通过list 命令查看: 
    keytool -list -keystore c:/keystore/servertrust -storepass 080302   

    也能够考虑将server证书和server信任证书放到一个密钥库中

    第四步:配置Tomcat server 

    打开Tomcat 根文件夹下的 /conf/server.xml ,改动例如以下: 

    <="" 1.1? sslenabled="true">maxThreads="150" scheme="https" secure="true"

    clientAuth="true" sslProtocol="TLS"

    keystoreFile="C:/Java/Tomcat/conf/keystore/server" keystorePass="080302"

    truststoreFile="C:/JavaTomcat/conf/keystore/servertrust" truststorePass="080302" 

    />

    详解见本节最前面介绍。

    安装个人证书user.p12(password:080302)和服务器证书server.cer
    到这里启动tomcat,输入 https://hepengfei:8443/Test,就OK了。 

    假设数字证书注冊名称不是127.0.0.1,而是相应的一个hepengfei,

    使用ip訪问(https://127.0.0.1:8443/Test)能够进入选择数字证书界面(仿真格式): 

    选择数字证书

        名称     颁发商

        MyPC     MyPC

        具体信息  查看证书

            确定   取消

    注意点:

    keytool -list -v -keystore user

    使用的库要privateKeyEntry

    信任的库要trustedCertEntry

    ConvertKeystoreType.java用于转换密钥库类型(PKCS12与JKS格式证书库转换工具)

    ssl使用当中四个密钥库

    https使用server、servertrust、user.p12(安装到本地计算机)、server.cer四个

  • 相关阅读:
    HTML: 表单标签、CSS语法、CSS选择器、CSS属性
    HTML:快速入门、表格标签
    JDBC连接池&JDBCTemplate
    JDBC
    MYSQL多表查询&事务
    使用CompletionService批处理任务(线程池阻塞线程)
    java运行字符串代码
    Linux常用命令大全(非常全!!!)
    SpringBoot防止重复请求,重复表单提交超级简单的注解实现
    在Spring-boot中,为@Value注解添加从数据库读取properties支持
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4345542.html
Copyright © 2011-2022 走看看