1.简介

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

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

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

2. SSL及其工作方式

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

Java Keystore教程

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

  1. 浏览器请求一个安全页面(通常为https://)。
  2. Web服务器发送其公钥及其证书。
  3. 浏览器检查证书是否由受信任的方(通常是受信任的根CA)颁发,证书仍然有效,并且证书与联系的网站有关。
  4. 然后,浏览器使用公共**对随机对称加***进行加密,并将其与所需的已加密URL以及其他已加密的http数据一起发送到服务器。
  5. Web服务器使用其私钥解密对称加***,并使用对称**解密URL和http数据。
  6. Web服务器发回请求的html文档和使用对称**加密的http数据。
  7. 浏览器使用对称**解密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

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

      Java Keystore教程

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

      Java Keystore教程

    3. 下载Tomcat 7
    4. 配置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" />
    5. 启动Tomcat并转到https:// localhost:8443 / ,您将发现以下安全问题,浏览器将在其中显示不受信任的错误消息。 就电子商务而言,此类错误消息会导致对网站立即失去信心,并且组织可能会失去大多数消费者的信心和业务,这很正常,因为您的证书尚未由Thawte或Verisign等CA签署谁将验证请求者的身份并签发签名证书。 Java Keystore教程
    6. 您仍然可以单击继续,直到您收到签名证书。

    翻译自: https://www.javacodegeeks.com/2014/07/java-keystore-tutorial.html

    相关文章:

    • 2021-04-16
    • 2021-07-04
    • 2022-12-23
    • 2022-12-23
    • 2021-11-09
    猜你喜欢
    • 2022-12-23
    • 2021-11-15
    • 2022-12-23
    • 2022-12-23
    • 2021-08-09
    • 2022-02-10
    • 2022-12-23
    相关资源
    相似解决方案