





















| 特性 | 对称加密 | 非对称加密 |
|---|---|---|
| 速度 | ⚡ 极快(GB/s级) | 🐢 慢(约慢1000倍) |
www.yourbank.com 真的是你的银行吗?攻击者可以搭建一个一模一样的假网站(钓鱼网站),诱骗你输入账号密码。HTTP 本身无法验证网站的真实身份。HTTP:负责实际的数据传输(内容本身)。SSL (Secure Sockets Layer) / TLS (Transport Layer Security):负责在 HTTP 传输层之上建立一个安全的加密通道。目前主要使用更安全、更新的 TLS (SSL 3.0 已被淘汰,通常我们说 SSL 指代的是 TLS)。HTTPS 的安全保障主要依赖于 TLS/SSL 协议。其核心过程是 “TLS 握手”,目的是协商出一个只有客户端和服务器知道的会话密钥,用于后续通信的对称加密。握手过程中使用到了非对称加密,在传输数据时使用对称加密。
密钥交换简化流程:
为什么不能只用对称加密?
因为如何安全地把这个对称密钥从服务器传给客户端是个大问题(在互联网上直接发密钥,会被窃听)。
为什么需要证书,服务器直接发送公钥,不通过证书行不行?
没有证书的情况下,如何确保拿到的公钥就是我想要访问的网站发送的呢,而不是攻击者伪造的,解决方案就是通过数字证书,因为证书上有签名,浏览器必须验证签名成功后,才会信任这个证书,信任这个公钥。
证书内容: 由受信任的第三方机构 CA (Certificate Authority) 颁发。包含:
验证过程 (信任链):
CA 的角色: 充当互联网上的“公证处”。它会在签发证书前验证申请者(通常是网站所有者)对该域名的控制权(验证过程严格程度不同,对应 DV, OV, EV 证书等级)。浏览器只信任由它内置列表中的 CA 签发的证书。
锁图标的意义: 浏览器显示锁图标,意味着它成功验证了服务器的证书,确认了网站的身份。
如果浏览器无法验证网站的证书时会发生什么?
此时浏览器会将访问控制权交给用户,并且地址栏会显示红色的叉号,如果用户确认要访问时,数据传输过程还是会进行加密,因为数字证书上的公钥可以直接获取到,用来对对称加密使用到的密钥进行加密,只不过该公钥(证书)不被浏览器信任而已。
所谓自签名证书就是用自己的私钥来进行签名的,即网站服务端使用这个证书时,只要操作系统也安装了这个证书,使用https访问时就不会有安全警告了。不像CA机构颁发的证书,是使用CA机构的私钥进行签名的,因此需要操作系统安装该CA机构私钥对应的证书文件(证书包含了对应的公钥),这样浏览器才能对自己的证书进行签名验证。
| 格式 | 特点 | 典型扩展名 |
|---|---|---|
| PEM | 文本格式,Base64编码,二进制格式的Base64文本表示 | .pem, .crt |
| DER | 二进制格式 | .der, .cer |
| PKCS#12 | 加密容器,一个打包文件(打包证书+私钥) | .p12, .pfx |
典型PEM文件示例
证书文件
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
...(Base64编码数据)...
-----END CERTIFICATE-----
私钥
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDfX4sJqD7v7S4d
...(Base64编码数据)...
-----END PRIVATE KEY-----
证书签名请求(CSR)
-----BEGIN CERTIFICATE REQUEST-----
MIIEkjCCAnoCAQAwFjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3
...(Base64编码数据)...
-----END CERTIFICATE REQUEST-----
PKCS#12(Public Key Cryptography Standards #12)是一种文件格式标准,用于安全地存储和传输加密的私钥及其关联的数字证书(如X.509证书)。它通常用于打包用户的个人身份凭证(私钥+证书+信任链),便于在不同系统或应用之间迁移或备份。
.p12 或 .pfx(两者通常可互换使用,但严格来说PFX是PKCS#12的前身)。keytool支持PKCS#12)。# 生成
keytool -genkeypair -alias wastonl -dname "CN=www.wastonl.com" \
-ext "SAN=dns:www.wastonl.com,dns:localhost,ip:127.0.0.1" \
-keyalg RSA -keysize 2048 \
-storetype PKCS12 -keystore wastonl.p12 -storepass 123456 \
-validity 3650
# 查看详情(敲回车后,会提示输入密码才能查看,生成时-storepass指定的密码)
keytool -list -v -keystore wastonl.p12 -storetype PKCS12
# 导出其中的证书文件,keytool命令不直接支持导出私钥文件,-rfc导出为pem格式,不加则是二进制格式
# 同样要输入密码
keytool -exportcert -alias wastonl -file wastonl.crt -rfc \
-keystore wastonl.p12 -storetype PKCS12
参数说明:
-alias:密钥条目别名(自定义名称)-dname: 证书主题,同下面openssl的-subj选项-ext:添加扩展,同下面openssl的-addext选项-keyalg:密钥算法(推荐 RSA 或 EC)-keysize:密钥长度-storetype:指定密钥库格式为 PKCS12,从JDK9开始默认为PKCS12,JDK8是JKS-keystore:输出文件名(建议使用 .p12 扩展名)-validity:证书有效期(天)-storepass:密钥库密码(此处为示例,请替换)使用自签名证书 + SpringBoot构建
# 一步直接生成私钥以及证书文件
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout private.key -out wangtaoj.crt \
-subj "/C=CN/ST=Hunan/L=Changsha/O=wangtaoj/OU=wangtaoj/CN=www.wangtaoj.com" \
-addext "subjectAltName=DNS:localhost,DNS:www.wangtaoj.com,IP:127.0.0.1"
# 查看证书内容
openssl x509 -in wangtaoj.crt -text -noout
参数说明:
-x509:生成自签名证书-newkey rsa:4096:生成 4096 位的 RSA 私钥-sha256:使用 SHA-256 签名算法-days 3650:证书有效期(10年)-nodes:不加密私钥(无密码)-keyout server.key:私钥输出文件-out server.crt:证书输出文件-subj:证书主题(按需修改):
C:国家(如 CN,代表中国)ST:省/州L:城市O:组织名OU:部门CN:主域名-addext:添加扩展(支持多域名/IP)(必须添加):
DNS:localhost:域名IP:127.0.0.1:IP 地址关键说明:
SAN(Subject Alternative Name):
现代浏览器要求证书包含 SAN 扩展,务必在 subjectAltName 中添加所有需要支持的域名/IP,否则浏览器会提示没有指定主题备用名称
上面的证书便可以通过localhost、www.wangtaoj.com、127.0.0.1访问,并且是安全的。
macos需要在钥匙串访问->登录页面,将证书拖进去,然后双击证书,打开详情在信任里选择始终信任即可。
pem格式
server:
port: 443
ssl:
certificate: classpath:certificate/wangtaoj.crt
certificate-private-key: classpath:certificate/private.key
pkcs12文件
server:
port: 443
ssl:
key-store-password: 123456
key-store-type: PKCS12
key-store: classpath:certificate/wastonl.p12
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。