首页 > 解决方案 > SAML SSO 的密钥库证书的重要性

问题描述

我是证书和密钥库的新手。

SAML SSO(在 Spring boot SAML SSO 的上下文中)的密钥库和证书的重要性和工作原理是什么?

我看到.jks, .pem, .cer, .der, 等在使用中。这些是什么?

标签: spring-bootsingle-sign-onsamlx509certificatespring-saml

解决方案


KeyStore 的重要性和工作原理以及 SAML SSO 的证书(在 Spring boot SAML SSO 的上下文中)是什么?

  • 这些用于签署 SAML 断言、SAML 协议请求和响应的安全含义。
  • SAML SSO 中的证书将用于对 SAML 断言/请求/响应进行数字签名,而 KeyStore 是存储密钥/证书的持久存储。
  • 断言方签名的断言支持断言完整性、断言方对 SAML 依赖方的身份验证,并且如果签名基于 SAML 机构的公私密钥对,则支持不可否认的来源。

  • 由消息发起者签名的 SAML 协议请求或响应消息支持消息完整性、消息来源到目的地的身份验证,并且如果签名基于发起者的公私密钥对,则支持来源的不可否认性。

  • 证书也用于安全通道建立 (SSL/TLS)。

.jks、.pem、.cer、.der 等是什么?

  • .jks 是 JAVA 专有的 KeyStore (JKS) 格式的扩展。JKS 是私钥和相关证书或证书链的数据库格式。在 JAVA 8 之前,默认情况下,如 java.security 文件中所指定,keytool 使用 JKS 作为密钥和证书数据库(KeyStore 和 TrustStores)的格式。自 JAVA 9 起,默认 KeyStore 格式已更改为 PKCS12(扩展名 .pkcs)。

.pem、.cer、.der 是证书/密钥类型/扩展名:

  • .PEM :PEM 扩展名用于不同类型的 X.509v3 文件,这些文件包含以“-- BEGIN ...”行为前缀的 ASCII (Base64) 装甲数据。
  • .DER :DER 扩展名用于二进制 DER 编码证书。这些文件也可能带有 CER 或 CRT 扩展名。正确的英语用法是“我有一个 DER 编码证书”而不是“我有一个 DER 证书”。
  • .CRT :CRT 扩展名用于证书。证书可以编码为二进制 DER 或 ASCII PEM。CER 和 CRT 扩展几乎是同义词。在 *nix 系统中最常见。
  • CER:.crt 的替代形式(Microsoft 约定)您可以使用 MS 将 .crt 转换为 .cer(.both DER 编码的 .cer,或 base64[PEM] 编码的 .cer) .cer 文件扩展名也被 IE 识别为运行 MS cryptoAPI 命令(特别是 rundll32.exe cryptext.dll,CryptExtOpenCER)的命令,该命令显示导入和/或查看证书内容的对话框。
  • .KEY :KEY 扩展名用于公共和私有 PKCS#8 密钥。密钥可以编码为二进制 DER 或 ASCII PEM。

推荐阅读