TLS协议详解-实践


前言

一般商用TLS证书费用较高,如果是内部测试环境,自签名证书完全够用了,但是自签名证书在使用中还是有一些注意的地方,例如java程序,在使用自签名证书会遇到不信任问题,需要手动导入。


一、自签证书生成

自签证书是否需要创建CA

  1. 自签名证书‌:用户只是为自己创建和签名一个证书,没有创建CA。这种证书适用于简单的、小规模的环境,或者测试和开发阶段‌
  2. 带CA的自签名证书‌:用户不仅为自己创建证书,还创建了自己的CA,然后使用该CA签名其证书。这种证书适用于需要多个证书并且需要统一管理和验证的场景,具有较好的扩展性‌。例如k8s证书。

不带CA,自签证书

  1. 使用 OpenSSL 生成一个私钥文件(server.key):
openssl genrsa -out server.key 2048
  1. 创建证书签署请求(CSR)
openssl req -nodes -new -key server.key -out server.csr

在这里插入图片描述
注意:前两步可以用下面一步直接执行,而且不需要交互:

openssl req -nodes -new -subj "/C=CN/ST=BeiJing/L=BeiJing/O=threedog/OU=threedog/CN=*.cuiwin.top" -keyout server.key -out server.csr
  1. 颁发证书
openssl x509 -req -sha256 -days 3650 -in server.csr -signkey server.key -out server.crt

[root@test20 certs]# ll
total 12
-rw-r--r-- 1 root root 1306 Dec 30 21:59 server.crt
-rw-r--r-- 1 root root 1058 Dec 30 21:58 server.csr
-rw-r--r-- 1 root root 1679 Dec 30 21:53 server.key

2.带CA,自签证书


二、自签证书部署

三、证书分析查看

浏览器直接点击

openssl

查看证书是否过期

openssl x509 -in ./server.crt  -noout -text | grep 'Not'

curl

curl -Ivvv https://www.baidu.com

[root@test20 ~]# curl -Ivvv https://www.baidu.com
* About to connect() to www.baidu.com port 443 (#0)
*   Trying 110.242.68.4...
* Connected to www.baidu.com (110.242.68.4) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Server certificate:
* 	subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",L=beijing,ST=beijing,C=CN
* 	start date: Jul 08 01:41:02 2024 GMT
* 	expire date: Aug 09 01:41:01 2025 GMT
* 	common name: baidu.com
* 	issuer: CN=GlobalSign RSA OV SSL CA 2018,O=GlobalSign nv-sa,C=BE
> HEAD / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*

openssl s_client

s_client 是 OpenSSL 工具包中的一个命令行工具,用于创建一个到远程服务器的安全连接,并显示连接的详细信息。它可以用来测试 HTTPS 服务器的配置,查看证书链,以及通过 HTTPS 隧道传输数据。

openssl s_client -connect www.baidu.com:443

Java报错

javax net.ssl. SSL Hand shake Exception:sun.security,validatorException:PKIX path building
failed:sun security,prorider.certpathSunCert Path BuilderException=unable to find ralid
certification path to requested target

解决报错:

  1. 导入证书
keytool -import -noprompt -alias caskeystore -keystore $JAVA_HOME/jdk
8u202-b08/jre/lib/security/cacerts -file /data/ssl/server.crt -storepass changeit
  1. 检查导入
keytool -list -storepass changeit -keystore $JAVA_HOME/jdk
8u202-b08/jre/lib/security/cacerts | grep caskeyst
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值