zoukankan      html  css  js  c++  java
  • java keytool 安全证书学习

    keytool生成证书

    验证是否已创建过同名的证书
    keytool -list -v -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -storepass changeit
    删除已创建的证书
    keytool -delete -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -storepass changeit

    创建证书
    1.服务器中生成证书:(注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost)
    keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -

    storepass changeit
    2.导出证书,由客户端安装:
    keytool -export -alias tomcat -keystore d:\mykeystore -file d:\mycerts.cer -storepass changeit
    3.客户端配置:为客户端的JVM导入密钥(将服务器下发的证书导入到JVM中)
    keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -file d:\mycerts.cer -storepass changeit

    常出现的异常:“未找到可信任的证书”--主要原因为在客户端未将服务器下发的证书导入到JVM中,可以用
    keytool -list -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -storepass changeit
    来查看证书是否真的导入到JVM中。

    Keytool是一个Java数据证书的管理工具。

    keystore
    Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中
    在keystore里,包含两种数据:
    密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
    可信任的证书实体(trusted certificate entries)——只包含公钥

    Alias(别名)
    每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写

    keystore的存储位置
    在没有制定生成位置的情况下,keystore会存在与用户的系统默认目录,
    如:对于window xp系统,会生成在系统的C:\Documents and Settings\UserName\
    文件名为“.keystore”

    keystore的生成

    引用

    keytool -genkey -alias tomcat -keyalg RSA   -keystore d:\mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass -validity 180

    参数说明:
    -genkey表示要创建一个新的密钥
    -dname表示密钥的Distinguished Names,
    CN=commonName
    OU=organizationUnit
    O=organizationName
    L=localityName
    S=stateName
    C=country
    Distinguished Names表明了密钥的发行者身份
    -keyalg使用加密的算法,这里是RSA
    -alias密钥的别名
    -keypass私有密钥的密码,这里设置为changeit
    -keystore 密钥保存在D:盘目录下的mykeystore文件中
    -storepass 存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出
    -validity该密钥的有效期为 180天 (默认为90天)

    cacerts证书文件(The cacerts Certificates File)
    改证书文件存在于java.home\lib\security目录下,是Java系统的CA证书仓库

    创建证书
    1.服务器中生成证书:(注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost)
    keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit
    2.导出证书,由客户端安装:
    keytool -export -alias tomcat -keystore d:\mykeystore -file d:\mycerts.cer -storepass changeit
    3.客户端配置:为客户端的JVM导入密钥(将服务器下发的证书导入到JVM中)
    keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -file d:\mycerts.cer -storepass changeit
    生成的证书可以交付客户端用户使用,用以进行SSL通讯,或者伴随电子签名的jar包进行发布者的身份认证。

    https站点密码验证使用弱口令:

    现象:在Windows Vista上浏览一个被配置成使用弱密码(40位/56位加密)的HTTPS站点时,显示一个错误页面。

    原因:在Windows Vista中,默认已经关闭了弱密码,仅开启强密码。

    在生成证书选择加密方式 RSA

    解决办法:对于访问者没有办法解决,只能等待https站点管理员修改验证使用的弱口令。

    keytool生成根证书时出现如下错误:

    keytool错误:java.io.IOException:keystore was tampered with,or password was incorrect

    原因是在你的home目录下是否还有.keystore存在。如果存在那么把他删除掉,后再执行

    或者删除"%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS 再执行

  • 相关阅读:
    108. Convert Sorted Array to Binary Search Tree
    How to check if one path is a child of another path?
    Why there is two completely different version of Reverse for List and IEnumerable?
    在Jenkins中集成Sonarqube
    如何查看sonarqube的版本 how to check the version of sonarqube
    Queue
    BFS广度优先 vs DFS深度优先 for Binary Tree
    Depth-first search and Breadth-first search 深度优先搜索和广度优先搜索
    102. Binary Tree Level Order Traversal 广度优先遍历
    How do I check if a type is a subtype OR the type of an object?
  • 原文地址:https://www.cnblogs.com/wen12128/p/1848074.html
Copyright © 2011-2022 走看看