zoukankan      html  css  js  c++  java
  • ssl/https双向验证的配置

    1.SSL认证

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

    2.HTTPS认证

    一、基本概念

    1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 
    2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址 
    如果只是加密,我感觉单向就行了。 
    如果想要用系统的人没有证书就访问不了系统的话,就采用双向

    二、服务器配置:

    打开Tomcat 根目录下的 /conf/server.xml 修改server.xml

    客户端证书注册名称必须与域名一致,否则无法验证。

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

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

    本机中域名解析修改文件是C:WINDOWSsystem32driversetchosts

    端口号改为8443,为自定义端口    访问https://127.0.0.1:8443/Test

    端口号改为443,则为默认端口    访问https://127.0.0.1/Test

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

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

    信任密钥库文件和密码(含有客户端证书或其根证书)

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

    clientAuth="true" sslProtocol="TLS"

    keystoreFile="C:JavaTomcatconfkeystoreserver" keystorePass="080302"

    truststoreFile="C:JavaTomcatconfkeystoreservertrust" truststorePass="080302" 

    />

    三、证书的生成如下:
    执行命令前先保证文件夹存在。例如:在c盘建立keystore文件夹
    第一步:为服务器生成证书 

    确定域名:本机中域名解析修改文件是C:WINDOWSsystem32driversetchosts
    使用keytool 为 Tomcat 生成证书和密钥库,假定目标机器的域名是“ hepengfei ”, keystore 文件存放在“ C:keystoreserver ”,口令为“ 080302 ”,命令如下: 
    keytool -genkey -v -keystore C:keystoreserver -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安装在客户端解决服务器信任问题:

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


    第二步:为客户端生成证书 

    (注意:个人证书的生成和使用比较特别,是分开的。先生成p12文件,然后导出cer文件,再将cer文件导入默认类型的keystoreJKS)文件)
    这一步是为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE 和 Firefox ,证书格式应该是 PKCS12 ,因此,使用如下命令生成: 

    keytool -genkey -v -keystore C:keystoreuser.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 

    服务器要信任客户端证书,就必须把客户端证书添加为服务器的信任认证。由于不能直接将 PKCS12 格式的证书库导入,我们必须先把客户端证书导出为一个单独的 CER 文件,使用如下命令: 
    keytool -export -alias MyPC -keystore C:keystoreuser.p12 -storetype PKCS12 -storepass 080302 -rfc -file C:keystoreuser.cer 

    接着,将C:user.cer导入到服务器的证书库,添加为一个信任证书: 
    keytool -import -v -file C:keystoreuser.cer -keystore c:keystoreservertrust -alias user -storepass 080302

    输入“是”确认完成。

    通过list 命令查看: 
    keytool -list -keystore c:keystoreservertrust -storepass 080302 

    也可以考虑将服务器证书和服务器信任证书放到一个密钥库中

    第四步:配置Tomcat 服务器 

    打开Tomcat 根目录下的 /conf/server.xml ,修改如下: 

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

    clientAuth="true" sslProtocol="TLS"

    keystoreFile="C:JavaTomcatconfkeystoreserver" keystorePass="080302"

    truststoreFile="C:JavaTomcatconfkeystoreservertrust" truststorePass="080302" 

    />

    详细解释见本节最前面介绍。

    安装个人证书user.p12(密码: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用于转换密钥库类型(PKCS12JKS格式证书库转换工具)

    ssl使用其中四个密钥库

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

  • 相关阅读:
    ZeptoLab Code Rush 2015
    UVa 10048 Audiophobia【Floyd】
    POJ 1847 Tram【Floyd】
    UVa 247 Calling Circles【传递闭包】
    UVa 1395 Slim Span【最小生成树】
    HDU 4006 The kth great number【优先队列】
    UVa 674 Coin Change【记忆化搜索】
    UVa 10285 Longest Run on a Snowboard【记忆化搜索】
    【NOIP2016提高A组模拟9.28】求导
    【NOIP2012模拟10.9】电费结算
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3397901.html
Copyright © 2011-2022 走看看