Java 生成证书:使用 OpenSSL

简介: Java 生成证书:使用 OpenSSL

Java 生成证书:使用 OpenSSL
Windows 安装 OpenSSL 生成自签名证书

假设生成的自签名项目的名字是 vpp

openssl req -newkey rsa:2048 -nodes -keyout vpp.key -x509 -days 36500 -subj "/C=CN/CN=test.com" -out vpp.crt

openssl pkcs12 -export -out vpp.p12 -inkey vpp.key -in vpp.crt -certfile vpp.crt -passout pass:123456

keytool -importkeystore -srckeystore vpp.p12 -srcstoretype PKCS12 -srcstorepass 123456 -destkeystore vpp.keystore -deststorepass 123456 -destkeypass 123456

解释
您提供的命令用于生成自签名证书并将其导出为 Java 密钥库格式。以下是每个命令的详细解析:

生成 RSA 私钥和自签名证书:

openssl req -newkey rsa:2048 -nodes -keyout vpp.key -x509 -days 36500 -subj "/C=CN/CN=test.com" -out vpp.crt
openssl req:用于生成证书签名请求(CSR)或自签名证书。
-newkey rsa:2048:生成新的 RSA 私钥,长度为 2048 位。
-nodes:不对私钥进行加密(不需要密码)。
-keyout vpp.key:将生成的私钥保存为 vpp.key 文件。
-x509:生成自签名证书。
-days 36500:证书有效期为 36500 天(约 100 年)。
-subj "/C=CN/CN=test.com":设置证书的主题,包含国家(C=CN)和通用名称(CN=test.com)。
-out vpp.crt:将生成的证书保存为 vpp.crt 文件。
将私钥和证书导出为 PKCS#12 格式:

openssl pkcs12 -export -out vpp.p12 -inkey vpp.key -in vpp.crt -certfile vpp.crt -passout pass:123456
openssl pkcs12:用于处理 PKCS#12 文件。
-export:导出密钥和证书。
-out vpp.p12:将导出的 PKCS#12 文件保存为 vpp.p12。
-inkey vpp.key:使用之前生成的私钥 vpp.key。
-in vpp.crt:使用之前生成的证书 vpp.crt。
-certfile vpp.crt:在 PKCS#12 文件中包含证书。
-passout pass:123456:为导出的文件设置密码 123456。
将 PKCS#12 转换为 Java 密钥库格式:

keytool -importkeystore -srckeystore vpp.p12 -srcstoretype PKCS12 -srcstorepass 123456 -destkeystore vpp.keystore -deststorepass 123456 -destkeypass 123456
keytool:Java 提供的工具,用于管理密钥和证书。
-importkeystore:导入一个密钥库。
-srckeystore vpp.p12:源密钥库,即之前生成的 PKCS#12 文件 vpp.p12。
-srcstoretype PKCS12:源密钥库类型为 PKCS#12。
-srcstorepass 123456:源密钥库的密码。
-destkeystore vpp.keystore:目标密钥库的名称,即 vpp.keystore。
-deststorepass 123456:目标密钥库的密码。
-destkeypass 123456:目标密钥库中私钥的密码。
执行完这些命令后,您将得到一个 Java 密钥库文件 vpp.keystore,其中包含您生成的自签名证书和私钥。

nginx 启动
[root@bogon nginx_16002]# tree ./
./
|-- cert
| |-- vpp.crt
| |-- vpp.key
| |-- vpp.keystore
| -- vpp.p12 |-- conf.d |-- vas_ws.conf
|-- log
`-- startup.sh
vas_ws.conf 内容

[kod.fa-ya.com)
[kod.mangoex.net)
[kod.hfrsyky.com)
[kod.szzdcl.com)
[kod.webinsz.com)
[kod.xgxsdly.com)
[kod.ljzrsy.com)
[kod.hy-leather.com)
[kod.bjnyf.com)
server {
listen 16002 ssl;
server_name test.com;

ssl_certificate /etc/nginx/cert/vpp.crt;
ssl_certificate_key /etc/nginx/cert/vpp.key;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

location / {
    proxy_pass http://192.168.10.40:26002/;  # 代理到 Spring Boot 应用
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

}
startup.sh 文件内容

docker run -d \
-p 16002:16002 \
--restart=unless-stopped \
--name nginx_vas_ws_16002 \
-v /app/vas/vas_ws/nginx_16002/conf.d/vas_ws.conf:/etc/nginx/conf.d/default.conf \
-v /app/vas/vas_ws/nginx_16002/cert/:/etc/nginx/cert/ \
-v /app/vas/vas_ws/nginx_16002/log/:/var/log/nginx \
nginx:1.26.1
标签: 证书

相关文章
|
6月前
|
Java 数据安全/隐私保护
Java 中使用 OpenSSL 生成公钥私钥进行数据加解密
Java 中使用 OpenSSL 生成公钥私钥进行数据加解密
124 0
|
1月前
|
存储 Java 数据安全/隐私保护
Java 生成证书:使用 keytool
Java 生成证书:使用 keytool
|
小程序 Java 应用服务中间件
[记录]Java开发微信小程序遇到的缺少中间证书问题
[记录]Java开发微信小程序遇到的缺少中间证书问题
187 0
|
安全 算法 Java
Java HTTPS如何加载证书
在进行Java编程开发中,经常会涉及到使用HTTPS协议进行安全通信。而HTTPS的安全性是建立在数字证书的基础上的,因此在Java中加载证书是一个非常重要的步骤。本文将围绕“JavaHTTPS如何加载证书”这一主题,为大家介绍一种简洁、高效的加载证书的方法。
472 0
|
存储 Java 数据安全/隐私保护
java CA证书制作和代码中使用
java CA证书制作和代码中使用
331 0
|
安全 架构师 前端开发
Java证书哪个含金量高?
下面小编将详细介绍一下含金量高的JAVA证书,避免大家在不需要的考试上浪费时间。
 Java证书哪个含金量高?
|
安全 Java Linux
Windows和Linux 导入java https调用接口时的受信任证书
Windows和Linux 导入java https调用接口时的受信任证书
|
机器学习/深度学习 安全 前端开发
JAVA面试都有Spring考题,还有必要去考Spring认证(证书)吗?
JAVA面试都有Spring考题,还有必要去考Spring认证(证书)吗?
JAVA面试都有Spring考题,还有必要去考Spring认证(证书)吗?
|
Java Android开发
Android/Java中解析.crt证书文件的公钥(public key)---Android拓展篇
Android/Java中解析.crt证书文件的公钥(public key)---Android拓展篇
1541 0
|
XML Java 数据格式
java使用jsoup时绕过https证书验证
java使用jsoup时绕过https证书验证
1354 0