5分钟快速上手:JDspyder京东抢购脚本终极实战指南
2026/7/22 0:48:05
有现代浏览器(Chrome、Edge、Firefox、Safari)均内置证书查看功能,核心是通过地址栏的「锁形图标」快速定位证书信息,步骤清晰且直观,能直接获取证书有效性、颁发者、有效期等关键内容。下面以Chrome浏览器举例说明:
https://开头,如https://www.baidu.com);www.baidu.com,需与访问域名一致);推荐使用OpenSSL(Windows/Mac/Linux 通用,需提前安装),可直接获取终端网站证书的完整 X.509 结构.
打开终端(Windows 用 PowerShell/CMD,Mac/Linux 用 Terminal),输入以下命令(替换example.com为目标终端网站域名):
# 连接网站443端口(HTTPS默认端口),显示终端证书及上游CA证书链 openssl s_client -connect example.com:443 -showcerts-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----分隔的第一个证书,即为终端网站证书;| openssl x509 -text -noout过滤,仅显示终端证书的可读文本信息:# 仅查看终端网站证书的详细文本(推荐) echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -text -nooutSubject:终端网站身份(如CN=example.com,即证书绑定域名);Issuer:签发该终端证书的上游 CA 机构;Validity:证书有效期(Not Before生效时间,Not After过期时间);Public Key Algorithm:公钥算法(如RSA、ECDSA)。example.com),点击「Submit」;下面博客链接中详细解读了终端证书和CA证书的区别和各字段含义,以及证书存储格式;
https://blog.liu-kevin.com/2020/08/04/x-509zheng-shu-nei-rong-xiang-jie/
首先,我们需要先明确两个基础概念,这对理解所有格式至关重要:
.der、.crt、.cer(注意:.crt/.cer也可能是 PEM 格式,扩展名只是约定,不代表格式)。-----BEGIN CERTIFICATE----- MIICmjCCAYICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV UzEQMA4GA1UEChMHQWNtZSBDbzEOMAwGA1UECxMFVG9reW8xEDAOBgNVBAMTB1Bh bnRpYW4wHhcNMTUwNjE1MTA0MjMzWhcNMzUwNjE1MTA0MjMzWjBNMQswCQYDVQQG EwJVUzEQMA4GA1UEChMHQWNtZSBDbzEOMAwGA1UECxMFVG9reW8xEDAOBgNVBAMT B1BhbnRpYW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 nmAMqudLO07cGgN5Efprz23n3uH1++qGBNPNZRZ2XKKntBHjSfe6IgLmBx6Sviap ztsz3ljMzR7tjL9gcVbUfLw80AtukixlXp1AghUA8ebnF22dBYt7m3dMtZSq6zV9 6MEzWUDxwZAAXXVpmwGDanUGtk6rxdMjHEu6t43klsC/ejLgurcknr8knZj6oRg Rr1nTWKrHbtgxR4qD21dzxrW9K+eh85NHw6P+3W6TEa2RastNsZRPsmoqVwMbMu5 7iq/BGnw544fAQjQMZFs5sOevpGJBb5+oqgCWJ9Ud7u3x4yAGm5M9F56Yb5cikre 4jz/wyBsfAIJ9VNepO4b+KV/bT146d+wyRAgMBAAEwDQYJKoZIhvcNAQEFBQADgg EBALJ4gHHKeNXyqWepwngUS0fK+smI6Pd7bSEQG5WtvHcPaztrtN7NSR6ckkqFwF Pt+odW0VNgI3JW4+DhPnoJKvSfh01m4w//6vYatgjk6E5JhLU/NBdjpM3qc5a3bi 0iPPeC22ZyNdlIVHbO4bfPFZwNGxw7H0lARwR238VdjeceV KavU4/qqXs4vO2wK8 10L/iy60GEo= -----END CERTIFICATE-----.pem、.crt、.cer、.pem.crt(用后缀明确格式)。cryptography库)都支持。-----BEGIN PKCS7-----)。.p7b、.p7c、.spc(Software Publishing Certificate,代码签名证书常用)。keytool工具默认支持导入 / 导出 PKCS#7 格式的证书。密钥(主要是私钥,如 RSA、EC 私钥)的存储格式核心是如何封装私钥的 ASN.1/DER 数据,并处理安全性(如密码保护),主要分为 DER、PEM、PKCS#8、PKCS#12(PFX)。
.key、.der。-----BEGIN RSA PRIVATE KEY-----(对应 PKCS#1 格式)。-----BEGIN PRIVATE KEY-----(无算法标识,通用)或-----BEGIN ENCRYPTED PRIVATE KEY-----(加密的 PKCS#8)。-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQDCB63U9gG998k3zZt4h2xq6Z7bR0f8Q9+5Z8X7t2JZ7+8s3XJ ...(Base64字符)... -----END RSA PRIVATE KEY-----.pem、.key。BEGIN PRIVATE KEY)和加密的 PKCS#8(PEM 头部:BEGIN ENCRYPTED PRIVATE KEY)。.p12、.pfx(PFX 原本是 PKCS#12 的前身,现在已成为 PKCS#12 的代名词)。在实际工作中,经常需要转换格式,最常用的工具是OpenSSL,以下是几个高频转换命令:
# DER → PEM(证书) openssl x509 -inform der -in cert.der -out cert.pem # PEM → DER(证书) openssl x509 -outform der -in cert.pem -out cert.der # PEM → PKCS#7(证书链) openssl crl2pkcs7 -nocrl -certfile cert.pem -certfile ca.pem -out cert.p7b # PKCS#7 → PEM(提取证书) openssl pkcs7 -in cert.p7b -print_certs -out cert_chain.pem# 传统RSA私钥(PKCS#1)→ PKCS#8(未加密) openssl pkcs8 -topk8 -inform pem -in rsa_private.key -outform pem -nocrypt -out pkcs8_private.key # 传统RSA私钥 → PKCS#8(加密,需设置密码) openssl pkcs8 -topk8 -inform pem -in rsa_private.key -outform pem -out encrypted_pkcs8.key # PEM私钥+证书 → PKCS#12(PFX) openssl pkcs12 -export -in cert.pem -inkey private.key -out cert.p12 # PKCS#12 → PEM(提取私钥和证书) openssl pkcs12 -in cert.p12 -out cert_and_key.pem证书的用途由EKU 字段明确限定,不同用途的证书无法混用(如代码签名证书不能用于 HTTPS)。
serverAuth(服务器认证)。clientAuth(客户端认证)。codeSigning(代码签名)。emailProtection(邮件保护)。timeStamping(时间戳)。cRLSign):CA 用于签发 ** 证书吊销列表(CRL)** 的证书,验证 CRL 的真实性。ocspSign):用于 OCSP(在线证书状态协议)响应的签名,快速查询证书是否吊销。