Java生成SSL证书

简介: JAVA生成SSL证书,可以在HTTPS中使用

Java-big

1. 背景

开发环境或者测试环境,有的时候需要用到 HTTPS ,在时间和成本上考虑,我们利用 Java 密码体系结构(JCA, Java Cryptography Architecture) 完成建设可用的加密通信库。

利用 Java 自带 keytool.exe 生成证书, Keytool 是一个 Java 数据证书的管理工具,在命令行方式下,生成服务器证书申请文 CSR ,然后到 CA 签发服务器证书。

2. 演示环境

  • Windows 10
  • Jdk 1.8.0.131

3. 命令

  • genkey:定义将要创建一个新的密钥
  • alias:别名, alias ,不区分大小写
  • keyalg:指定加密的算法,这里是 RSA
  • keystore:指定密钥保存路径,在 D:盘目录下的 Code 文件中
  • dname:表示密钥的 Distinguished Names
  • keypass:私钥的密码
  • storepass:密钥库密码
  • validity:创建的证书有效期,单位为 天
  • list:列出证书
  • rfc:可编码方式打印证书
  • v:显示详细信息
  • import:将已签名数字证书导入密钥库
  • export:将别名指定的证书导出到文件
  • keysize:指定密钥长度
  • delete:删除密钥库中某条目
  • file:参数指定导出到文件的文件名
  • keypasswd:修改密钥库中指定条目的密码
  • storepasswd:修改密钥库的密码

4. 创建证书


keytool -genkey -alias eviltop -keyalg RSA -keystore D:\Code\eviltop.keystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass 123456 -storepass 123456 -validity 180

当不指定 keypassstorepass ,创建密钥过程中需要手工输入。

20220813223812

5. 查看证书

5.1. 显示详细

~~

keytool -list -v -keystore eviltop.keystore -storepass 123456

$ keytool -list -v -keystore eviltop.keystore -storepass 123456
密钥库类型: PKCS12
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: eviltop
创建日期: 2022年8月13日
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN
发布者: CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN
序列号: 2bce8e3
生效时间: Sat Aug 13 22:38:02 CST 2022, 失效时间: Thu Feb 09 22:38:02 CST 2023
证书指纹:

     SHA1: 76:60:92:F3:44:22:39:4F:66:B8:F1:B2:7B:11:BF:C6:66:AE:56:1F
     SHA256: 19:FD:21:B9:C9:51:BA:D9:82:3F:F6:C3:69:59:2D:99:E8:19:32:2C:05:46:7F:64:76:AB:A0:89:9E:38:20:8D

签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3

扩展:




### 5.2. 编码打印

keytool -list -rfc -keystore eviltop.keystore -storepass 123456

$ keytool -list -rfc -keystore eviltop.keystore -storepass 123456
密钥库类型: PKCS12
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: eviltop
创建日期: 2022年8月13日
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
-----BEGIN CERTIFICATE-----
MIIDZTCCAk2gAwIBAgIEArzo4zANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJD
TjELMAkGA1UECBMCU0gxCzAJBgNVBAcTAlNIMRIwEAYDVQQKEwlsb2NhbGhvc3Qx
EjAQBgNVBAsTCWxvY2FsaG9zdDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTIyMDgx
MzE0MzgwMloXDTIzMDIwOTE0MzgwMlowYzELMAkGA1UEBhMCQ04xCzAJBgNVBAgT
AlNIMQswCQYDVQQHEwJTSDESMBAGA1UEChMJbG9jYWxob3N0MRIwEAYDVQQLEwls
b2NhbGhvc3QxEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAIXMJuibBSyK60r+QMt9aqbrcSH/Esja31cbujh7DRJdjRgv
6c6d93JGQhzBe0mvWUnshi3KhmRCr44S2ZRtGk+UIEK+/cJWRgQzT3GFkNUe6pUh
dSe31g740409iu96/NihI2GjbsYJHsgsRktXBS8Wk7AjJlp2tFEb88d2wK/Ul3wW
Z/cuZnbed4x51htKOosyrLhtGM8QOXZfhNgAoVGY61eVhp5SB/TL4o9XnSaZsKfM
L/UV6QXmgrqsbyH7MLQCT6E/Hr7wW3lnwsSpiNg/49ETxYlS4Fj6N/O7rH4HFnWx
RXHKgFuKGsj7cZ0cELbTaydG8CqdptGybVkA3dECAwEAAaMhMB8wHQYDVR0OBBYE
FJlqY0G6hbf1+D9Q3vg18Z+2mI51MA0GCSqGSIb3DQEBCwUAA4IBAQAoskcTy9Kl
5iOMiQTyu71TEY48wx94ajqdRrdLm5frKawh115lGUhDEz+w+NAO+dGirNHuoyXf
Bl2G7qUVF6rbNVGHrwUlCdVFLD02l2nLVvqjQEnicxU6P5IBwxBHhbQfKEdFOETI
jr8gQKshDNgO+C6ugktnLfSNkiMs6UYeySWcZQDetZJbmts7N6mbpZW/h1Looku5
IJRkfwL5xEStRcOM1aEjIrATKveZQfbDPFQCpJmTfktoa1K4pob22/FeOPkSz35W
EJEp4eOFY/0kir4oacwyada1PUocklCJ+iiTLwLtzrue5upzBaFikyyhmtGiuT2p
NApthnwtHmuv
-----END CERTIFICATE-----




## 6. 导入导出证书

### 6.1. 导出

keytool -export -alias eviltop -file ./eviltop.crt -keystore ./eviltop.keystore -storepass 123456


![20220813224758](https://abram.oss-cn-shanghai.aliyuncs.com/blog/cia/20220813224758.png)

### 6.2. 导入

keytool -import -alias eviltop -file ./eviltop.crt -keystore ./eviltop.keystore -storepass 123456


## 7. 修改密码

### 7.1. 修改密钥库

keytool -storepasswd -keystore ./eviltop.keystore -storepass 123456 -new 567890


### 7.2. 修改密钥库指定条目

keytool -keypasswd -alias eviltop -keypass 123456 -new 654321 -storepass 567890 -keystore ./eviltop.keystore


## 8. 删除密码

keytool -delete -alias eviltop -keystore "D:\Environment\JDK\1.8.0_301\jre\lib\security\cacerts" -storepass changeit

目录
相关文章
|
3月前
|
关系型数据库 网络安全 对象存储
Flink报错问题之Flink报错java.io.EOFException: SSL peer shut down incorrectly如何解决
Flink报错通常是指在使用Apache Flink进行实时数据处理时遇到的错误和异常情况;本合集致力于收集Flink运行中的报错信息和解决策略,以便开发者及时排查和修复问题,优化Flink作业的稳定性。
|
7月前
|
Java 网络安全 数据安全/隐私保护
【Java异常】Unrecognized SSL message, plaintext connection?https请求遇到异常分析
【Java异常】Unrecognized SSL message, plaintext connection?https请求遇到异常分析
286 0
|
4月前
|
数据采集 存储 Java
Java爬虫与SSL代理:实际案例分析与技术探讨
Java爬虫与SSL代理:实际案例分析与技术探讨
|
4月前
|
安全 Java 网络安全
HTTPS的TLS/SSL协议详解及Java代码示例
HTTPS的TLS/SSL协议详解及Java代码示例
298 0
|
安全 Java 数据库连接
Java报错javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer‘s close_notify解决方法
Java报错javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer‘s close_notify解决方法
Java报错javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer‘s close_notify解决方法
|
关系型数据库 MySQL Java
Mysql开启ssl加密协议及Java客户端配置操作指南
本文主要讲述的是Mysql开启了ssl协议之后,Java客户端如何正确的链接Mysql访问数据
Mysql开启ssl加密协议及Java客户端配置操作指南
|
网络安全
java.util.concurrent.ExecutionException: javax.net.ssl.SSLHandshakeException: SSL handshake aborted:
java.util.concurrent.ExecutionException: javax.net.ssl.SSLHandshakeException: SSL handshake aborted:
|
Java 网络安全
Java 信任所有SSL证书(解决PKIX path building failed问题)
Java 信任所有SSL证书(解决PKIX path building failed问题)
18026 2
|
安全 Java Linux
Java调用ssl异常,javax.net.ssl.SSLHandshakeException: No appropriate protocol
Java调用ssl异常,javax.net.ssl.SSLHandshakeException: No appropriate protocol
979 0
Java调用ssl异常,javax.net.ssl.SSLHandshakeException: No appropriate protocol
|
安全 算法 Java
java https 请求 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
java https 请求 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
14065 0