欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Java Keystore教程

发布时间:2023/12/3 77 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java Keystore教程 小编觉得挺不错的,现在分享给大家,帮大家做个参考.



目录

1.简介 2. SSL及其工作方式 3.私钥 4.公开证书 5.根证书 6.证书颁发机构 7.证书链 8.使用Java keytool的密钥库 9.密钥库命令 10.在Apache Tomcat上使用密钥库和自签名证书配置SSL

1.简介

我们谁没有去ebay,亚马逊买东西或他的个人银行帐户来检查。 您是否认为这些站点足够安全,可以存储您的个人数据(信用卡号或银行帐号等)?

这些站点中的大多数都使用套接字层(SSL)协议来保护其Internet应用程序。 SSL允许在传输之前对来自客户端(例如Web浏览器)的数据进行加密,从而使试图嗅探数据的人无法对其进行解密。

许多Java应用程序服务器和Web服务器都支持将密钥库用于SSL配置。 如果要构建安全的Java程序,那么学习构建密钥库是第一步。

2. SSL及其工作方式

客户端始终使用HTTPS(而不是http://)开头的URL发起基于HTTP的SSL连接。 在SSL会话开始时,将执行SSL握手。 该握手产生会话的密码参数。 下图显示了如何处理SSL握手的简化概述。

简而言之,它是如何工作的:

  • 浏览器请求一个安全页面(通常为https://)。
  • Web服务器发送其公钥及其证书。
  • 浏览器检查证书是否由受信任的方(通常是受信任的根CA)颁发,证书仍然有效,并且证书与联系的网站有关。
  • 然后,浏览器使用公共密钥对随机对称加密密钥进行加密,并将其与所需的已加密URL以及其他已加密的http数据一起发送到服务器。
  • Web服务器使用其私钥解密对称加密密钥,并使用对称密钥解密URL和http数据。
  • Web服务器发回请求的html文档和使用对称密钥加密的http数据。
  • 浏览器使用对称密钥解密http数据和html文档并显示信息。
  • SSL的世界实质上具有三种类型的证书:私钥,公钥(也称为公共证书或站点证书)和根证书。

    3.私钥

    私钥包含服务器的身份信息以及密钥值。 它应该保持此密钥的安全并受密码保护,因为它用于在握手期间协商哈希值。 有人可以使用它来解密流量并获取您的个人信息。 就像将房门钥匙留在门锁中一样。

    4.公开证书

    公共证书(公共密钥)是提供给客户的部分,就像您在机场出示护照时一样。 与私有密钥紧密相关的公共证书是使用证书签名请求(CSR)从私有密钥创建的。 创建私钥后,您将创建一个CSR,该CSR被发送到您的证书颁发机构(CA)。 CA返回签名的证书,其中包含有关服务器身份和CA的信息。

    5.根证书

    根CA证书是一个CA证书,它只是一个自签名证书。 该证书代表签发证书的实体,被称为证书颁发机构或CA,例如VeriSign,Thawte等。

    6.证书颁发机构

    可以为您签名证书的公司,例如VeriSign,Thawte,Commodo,GetTrust。 此外,许多公司和机构都通过自己从头开始构建完整的实现,或者使用开源选项(例如OpenSSL)充当自己的CA。

    7.证书链

    当服务器和客户端建立SSL连接时,会向客户端提供一个证书。 客户应确定是否信任此证书,此过程称为证书链。 客户端检查证书的颁发者,搜索其受信任根证书的列表,并将呈现的证书上的颁发者与受信任证书的主题进行比较。

    如果找到匹配项,则连接继续。 如果不是,则Web浏览器可能会弹出一个对话框,警告您它不信任证书,并提供信任证书的选项。

    8.使用Java keytool的密钥库

    Java Keytool是密钥和证书管理实用程序。 它允许用户管理自己的公钥/私钥对和证书。 Java Keytool将密钥和证书存储在所谓的密钥库中 。 它使用密码保护私钥。

    Java密钥库中的每个证书都与唯一的别名关联。 创建Java密钥库时,您将首先创建.jks文件,该文件最初仅包含私钥,然后生成CSR。 然后,您会将证书(包括所有根证书)导入密钥库。

    9.密钥库命令

    创建密钥库,密钥和证书请求

    • 生成Java密钥库和密钥对 keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -storepass password
    • 为现有的Java密钥库生成证书签名请求(CSR) keytool -certreq -alias mydomain -keystore keystore.jks -storepass password -file mydomain.csr
    • 生成密钥库和自签名证书 keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360

    进口证明书

    • 将根或中间CA证书导入到现有的Java密钥库中
    keytool -import -trustcacerts -alias root -file Thawte.crt -keystore keystore.jks -storepass password
    • 将签名的主证书导入到现有的Java密钥库中 keytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore keystore.jks -storepass password
    • 出口证明书

      • 从密钥库导出证书 keytool -export -alias mydomain -file mydomain.crt -keystore keystore.jks -storepass password

      检查/列出/查看证书

      • 检查独立证书 keytool -printcert -v -file mydomain.crt
      • 检查哪些证书在Java密钥库中 keytool -list -v -keystore keystore.jks -storepass password
      • 使用别名检查特定的密钥库条目 keytool -list -v -keystore keystore.jks -storepass password -alias mydomain

      删除证书

      • 从Java Keytool密钥库中删除证书 keytool -delete -alias mydomain -keystore keystore.jks -storepass password

      修改密码

      • 更改Java密钥库密码 keytool -storepasswd -new new_storepass -keystore keystore.jks -storepass password
      • 更改私钥密码 keytool -keypasswd -alias client -keypass old_password -new new_password -keystore client.jks -storepass password

      10.在Apache Tomcat上使用密钥库和自签名证书配置SSL

    • 使用此命令生成新的密钥库和自签名证书,将提示您输入特定信息,例如用户名,组织单位,公司和位置。 keytool -genkey -alias tomcat -keyalg RSA -keystore /home/ashraf/Desktop/JavaCodeGeek/keystore.jks -validity 360

    • 您可以列出使用此命令刚创建的证书详细信息 keytool -list -keystore /home/ashraf/Desktop/JavaCodeGeek/keystore.jks

    • 下载Tomcat 7
    • 配置Tomcat的服务器以支持SSL或https连接。 在Tomcat \ conf \ server.xml中添加连接器元素 <Connector port="8443" maxThreads="150" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/home/ashraf/Desktop/JavaCodeGeek/.keystore" keystorePass="password" clientAuth="false" keyAlias="tomcat" sslProtocol="TLS" />
    • 启动Tomcat并转到https:// localhost:8443 / ,您将发现以下安全问题,浏览器将在其中显示不受信任的错误消息。 就电子商务而言,此类错误消息会导致对网站立即失去信心,并且组织可能会失去大多数消费者的信心和业务,这很正常,因为您的证书尚未由Thawte或Verisign等CA签署谁将验证请求者的身份并签发签名证书。
    • 您仍然可以单击继续,直到您收到签名证书。
    • 翻译自: https://www.javacodegeeks.com/2014/07/java-keystore-tutorial.html

    创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

    总结

    以上是生活随笔为你收集整理的Java Keystore教程的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。