在 SSL 证书主题字段中添加 ID

2023-12-26

我想知道是否有一种简单的方法可以在创建 SSL 证书时自动生成“全局”唯一 ID 并将其添加到主题字段中? 查看 OpenSSL bash 命令/示例将会很有帮助。

something along the lines of this: enter image description here


首先,主题字段和主题替代名称扩展(缩写为 SAN)是不同且独立的事物,尽管它们都被设计为与相同的现实世界实体相关;您的标题和文字仅指第一个,您的示例仅指第二个。

从技术上讲,主题字段非常灵活。它(与发行者一样)是一个 X.501“专有名称”(DN;不要与域名混淆),由一系列(可能是一组)类型值对组成,其中每种类型由 ASN.1 对象定义标识符(缩写为OID);有几种标准化的 OID,如“国家”、“地点”、“组织”和“commonName”,它们的使用非常广泛,但格式允许任何 OID,并且 OID 方案是可扩展的——任何人都可以获得分配的“弧”并创建几乎无限数量的新 OID,但有一个重要的限制:只有您编写的程序和您操作的系统才会知道您创建的新 OID,除非您让其他人或组织采用它们。所有标准 DN OID 都要求其值是字符串,尽管 ASN.1 支持的几个字符串中的哪一个具体取决于您阅读并尝试遵循的标准;具体参见DirectoryString的类型定义;其他 OID 不需要遵循这种做法,但可能应该使实施和使用更容易。SAN 不太通用;它支持多种值类型选择,其中两种使用类似于主题和发行者的可扩展 OID+值方案,但 SAN 的其他(也是更常见)选择更加具体和受限制。 该技术要求最初由 X.509v3 定义,但用于使用在互联网上(这不是唯一使用证书的地方)并且在某种程度上在互联网兼容的网络(即内部网)或系统上,控制定义现在主要是RFC 5280 https://www.rfc-editor.org/rfc/rfc5280#section-4(加上其他一些 RFC 中的相关位)。对于 HTTPSRFC2818 https://www.rfc-editor.org/rfc/rfc2818指定如果 SAN 存在,客户端(浏览器)必须使用它并忽略主题;其他一些协议也有类似的(但并不总是相同的)规则RFC6125 https://www.rfc-editor.org/rfc/rfc6125推荐将其用于任何新协议。

然而,公钥证书的目的是向可识别主体的密钥传达信任(并具有各种条件和约束);这要求实际证书能够足够准确地为使用该证书的实体(通常称为依赖方)识别主体;例如,对于 HTTPS 网站,依赖方是代表访问网站的人的浏览器。对于公共网络(HTTPS 和 WSS),并且在实践中,对于公共网络上的大多数其他 SSL/TLS 协议,这些标准是由CA/浏览器论坛 https://cabforum.org。参见基准要求的 7.1.4 以及 3.2.2 中引用的章节,尤其是 3.2.2.4 和 3.2.2.5;除了 DNS 名称和可能的 IP 地址之外,它们通常还要求主题和 SAN 包含确认属于申请人(见下文),只有人类可理解且非误导性的标识符,例如公司名称。 (但见下文。)未公开使用/信任的 CA,例如企业、机构、社会或工作组内的私有 CA,不一定必须遵守这些规则,尽管违反这些规则可能会导致在该规则上设计的软件出现问题。他们被遵循的期望或假设。

DNS 名称是全球唯一的。更准确地说,完全合格在适用的“权威”DNS 服务器中配置的域名 (FQDN) 是您可以从 CABforum CA 获取证书的唯一类型,并且在整个公共互联网上是唯一的。事实上,这是 DNS 自里根时代创建以来的目的和主要设计目标之一。然而,它们通常是由人们选择的,并且是助记符(对于助记符的某些价值),尽管它们can自动生成;例如,恶意软件作者和僵尸网络运营商经常使用自动生成且快速变化的域名作为其“命令和控制”系统,以试图阻止执法部门发现它们并关闭它们。一些(合法的)人还使用长随机或至少类似随机的子域名来尝试“隐藏”他们的网站或部分网站,但这种做法的效果如何是值得商榷的;我见过许多 Q(IIRC security.SX,也许还有 webmasters.SX),大意是“我使用了这个随机域名,我相信没有人能猜到,但它仍然受到攻击/DoSed/在搜索中发现?!” '

IP 地址也是全球唯一的,至少是“真正的”可分配地址(不是多播、任播、专用、链路本地、环回等)。 (同样,您只能获得可分配地址(如果有)的 CABforum 证书。) IPv4 地址主要根据您连接到的 ISP 进行分配,这是自动分配的; IPv6 地址部分基于 ISP,其余部分通常是自动的(伪随机或任意,例如接口的 MAC 地址)。除了经验丰富的网络工程师之外,它们大多是难以记忆的。然而,它们通常不是长期稳定的,对于移动/蜂窝/无线或某些云来说甚至不是短期稳定的。

您还没有解释为什么您认为“自动生成”的 id 会有任何好处。部分或所有人是否能够找出特定个人、实体或网站的 ID 应该是什么?他们将如何做到这一点,您将如何确保信息不会被伪造或篡改,并且不会过时?部分或所有人是否能够验证给定的 IDis他们希望与之沟通的某个人、实体或网站?这比我们现在的 id 好在哪里?

一种与您的问题有点相似的方法是,CABforum 允许向 TOR“隐藏服务”地址(又名)颁发 EV = 扩展验证证书(成本更高)“.onion”地址 https://en.wikipedia.org/wiki/.onion;请参阅 EV 指南附录 F。(维基百科错误地将选票 144 描述为将其添加到基线中,但基线更改只是为了revoke.洋葱证书;的变化issue它们在 EV 中。)因为 TOR 服务处于活动状态(程序可以与其通信)and永久绑定到公钥,CA 可以验证您“拥有”它,并且由于保留了特殊的 TLD“.onion”,CA 可以创建一个 DNS 格式的名称来放入 CommonName 和/或 SAN.dnsName,甚至尽管严格来说它不是真正的 DNS 名称(您无法在权威服务器中查找它)。该地址是自动生成的,根本不具有助记符,并且在统计上是唯一的(因为 v3 对已经相当随机的数据使用了良好的加密哈希)。

至于使用 OpenSSL 命令行,这不是一个编程问题,应该是题外话;有manyQs 主要在其他堆栈中,涵盖使用 OpenSSL 生成 CSR(证书签名请求)和证书,包括自签名(即根或伪根)证书以及您使用自己的 CA 签名的证书(由您签名,但不是自签名)。从...开始
如何使用 OpenSSL 生成带有SubjectAltName 的自签名证书? https://stackoverflow.com/questions/21488845/how-can-i-generate-a-self-signed-certificate-with-subjectaltname-using-openssl
如何与您的证书颁发机构签署证书签名请求? https://stackoverflow.com/questions/21297139/how-do-you-sign-openssl-certificate-signing-requests-with-your-
添加具有私有 CA 的 SAN https://stackoverflow.com/questions/43527040/openssl-san-with-custom-ca-selfsign
https://security.stackexchange.com/questions/44251/openssl-generate- different-type-of-self-signed-certificate https://security.stackexchange.com/questions/44251/openssl-generate-different-type-of-self-signed-certificate
https://security.stackexchange.com/questions/150078/missing-x509-extensions-with-an-openssl- generated-certificate https://security.stackexchange.com/questions/150078/missing-x509-extensions-with-an-openssl-generated-certificate
https://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-command-line https://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-command-line
https://security.stackexchange.com/questions/190905/subject-alternative-name-in-certificate-signing-request- https://security.stackexchange.com/questions/190905/subject-alternative-name-in-certificate-signing-request-
https://serverfault.com/questions/845766/generate-a-self-signed-cert-with-openssl-that-works-in-chrome-58 https://serverfault.com/questions/845766/generating-a-self-signed-cert-with-openssl-that-works-in-chrome-58
https://serverfault.com/questions/845806/how-to-generate-ssl-certificate-having-ca-keys https://serverfault.com/questions/845806/how-to-generate-ssl-certificate-having-ca-keys

但是您自己签署的任何证书(包括自签名)可能不会被其他任何人信任。如果您向 CA(至少是公共 CA)提交 CSR,并要求提供任意主题和/或 SAN 信息,他们将拒绝或忽略它,并且仅将他们(理解和)验证的内容放入证书中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SSL 证书主题字段中添加 ID 的相关文章

  • Npm 不工作(openSSL 配置错误 windows10x64)

    每当我在 powershell 中尝试 npm 命令时 都会收到此错误 node v v17 1 0 npm v OpenSSL configuration error 74240000 error 80000003 system libr
  • 为什么 Nginx 以相反的顺序提供客户端 SSL DN?

    我很好奇为什么某些 Web 服务器 例如 Nginx 以相反的顺序提供客户端 SSL DN Web 应用程序将 DN 发布到 Java Web 服务 该服务尝试创建 Javajavax naming ldap LdapName http d
  • openssl_random_pseudo_bytes() 很慢(PHP)

    我在 PHP 中使用 opennssl random pseudo bytes 它的执行速度非常慢 我的应用程序经常超时 引发执行时间限制错误 OpenSSL random 这么慢有什么特殊原因吗 我目前在我的开发机器上使用 Windows
  • 使用 Ruby OpenSSL 库时公钥无效

    我正在尝试在 Ruby 中生成 RSA 密钥对 主要使用来自这篇博文 http stuff things net 2009 12 11 generating rsa key pairs in ruby 这是我稍微修改过的代码 def gen
  • OS X Server 持续集成 ipa 发行版

    我们有一个配置了 SSL 证书并启用了 Xcode 的 osx 服务器 在将 OSX Server 更新到 3 2 1 和 Xcode 6 0 1 之前 一切正常 我们遇到的问题是 当集成完成后 我们单击设备上的安装按钮 它会尝试下载 但会
  • 在 Java Web 应用程序中处理 X-FORWARDED-PROTO 标头

    任何人都可以指导我与X 转发 原型 https developer mozilla org en US docs Web HTTP Headers X Forwarded Proto部署到 Apache Tomcat 的 Java Web
  • 证书吊销如何与中间 CA 配合使用?

    假设 PKI 层次结构如下所示 root CA gt inter 1 CA gt user 1 gt inter 2 CA gt user 2 我的问题是 根 CA 是否还需要定期从其子项 inter 1 和 inter 2 下载 CRL
  • 在 XCode 中静态链接 OpenSSL

    我正在尝试链接libssl a and libcrypto aXCode 命令行项目中的静态库 在 Link Binary With Libraries 下 我已在搜索路径中包含 Openssl 头文件 编译成功但执行失败dyld Libr
  • 无法验证 SSL 证书

    我想做的事 与以下人员保持干净的联系openssl connect到远程站点 网站似乎是自签名的 What I m getting CONNECTED 00000003 depth 0 CN DC01 home pri verify err
  • “访问此资源所需的证书无效”

    XMLHttpRequest Network Error 0x800c0019 Security certificate required to access this resource is invalid 我已经找到解决方案了 首先 我
  • 地址栏中的 https 锁和公司名称

    我注意到在查看贝宝的网站时 他们的公司名称位于 Chrome 中的锁定图标旁边 这是因为他们创作了 ssl 证书 还是您认为他们是如何实现这一目标的 这是我一直很好奇的事情 但在搜索过程中我很难找到任何答案 您需要一个称为 扩展验证 EV
  • 当 SSL_get_fd 返回 -1 时,这意味着什么?

    我正在使用 frida 分析一个程序 该程序肯定通过 SSL 连接到某个服务器 当我打电话时SSL get fd 它返回 1 从文档中我看到这意味着ssl不包装套接字 BIO 已明确配置 因为我可以通过SSL get rbio openss
  • OpenSSL的EVP是什么意思?

    OpenSSL的EVP是什么意思 我知道它是 OpenSSL 中的一个更高级别的加密接口库 但是字母 E V P 代表什么 谢谢 陈兹 有趣的问题 我不确定 但是 ifndefevp h 顶部是 ifndef HEADER ENVELOPE
  • 在命令行上解密使用 PHP openssl_encrypt 制作的文件

    我有一个要加密的字符串 encryptThis Super Secret Text echo openssl encrypt encryptThis aes 128 cbc 1234 FALSE F68A9A229A516752 然后我通过
  • 如何修改s_client的代码?

    我正在玩apps s client c in the openssl源代码 我想进行一些更改并运行它 但是在保存文件并执行操作后 我的更改没有得到反映make all or a make 例如 我改变了sc usage函数为此 BIO pr
  • openssl_pkey_get_public 未打开公钥,“无起始行”错误

    当生成公钥然后用函数读取它时openssl pkey get public publicKeyResource bool false 和消息 错误 0906D06C PEM 例程 PEM read bio 无起始行 privateKey o
  • 如何将 OpenSSL 与 WinSock 一起使用?

    我在网上搜索过 但没有找到任何与此相关的内容 有谁有使用 WinSock 和 OpenSSL 的简单代码示例吗 我正在寻找一个简单的 Visual C 2005 或更高版本的代码示例 它创建并打开一个 Winsock 连接 并使用 Open
  • SSL如何使用对称和非对称加密?如何管理一台主机上多个站点的认证? [复制]

    这个问题在这里已经有答案了 首先 引用微软TechNet的一些内容管理 Microsoft 证书服务和 SSL http technet microsoft com en us library bb727098 aspx 回顾一下 安全 S
  • OpenSSL DH 密钥太小错误

    我正在尝试使用简单的 PERL 脚本连接到封闭的服务器 空调 usr bin perl use 5 10 1 use warnings use strict use IO Socket SSL use IO Socket SSL qw de
  • 如何在flutter中绕过SSL证书验证?

    如何在flutter中绕过SSL证书验证 错误 握手异常 客户端中的握手错误 操作系统错误 CERTIFICATE VERIFY FAILED 自签名证书 handshake cc 345 您需要配置 HttpService 以使用自签名

随机推荐

  • 在 Go 中执行 CMD 的 'cd' 命令

    我想使用 Go 和 exec 库转到某个路径 c 然后运行 exe 文件 当我运行 Go 代码时 它会给出 exec cd 文件不存在 The cdcommand 是 shell 的内置命令 无论是 bash cmd exe PowerSh
  • 如何在 JavaScript 中创建内存泄漏并监控内存使用情况

    我正在尝试使用下面的代码片段在 JavaScript 中分配内存来研究内存泄漏 消耗 然而 performance memory usedJSHeapSize 总是显示相同的数字 在我的例子中是 10000000 尽管动态创建元素并附加到
  • 有没有办法在调用诺基亚反向地理编码 API 时关联响应和查询?

    我在用着反向地理管理者的方法诺基亚 places 搜索 manager HERE API 检索有关坐标的信息 在我的情况下 当显示一点信息时 它工作得很好 但是 当我有多个点时 我的所有点都会获取最后一个点的信息 事实上 我不使用 info
  • codeigniter 3,文件上传给出 HTTP ERROR 500

    我是 CodeIgniter 3 框架的新手 所以我对这个错误有点了解 基本上 当我尝试上传图像时 它会抛出 HTTP ERROR 500 并且服务器上的错误日志中没有错误 这是控制器的功能 if POST config upload pa
  • 查全率与查准率图

    我正在尝试绘制精确度与召回率的图表 这是我的分类报告 我不知道如何绘制显示这些的图表 这是我的分类报告代码 from sklearn metrics import classification report print print Conf
  • Smalltalk 如何操作调用堆栈帧(thisContext)?

    Smalltalk 对象thisContext看起来奇怪又奇妙 我不明白它是什么以及它是如何工作的 甚至它如何实现延续 对于 C 的调用堆栈 我可以轻松想象它是如何实现和工作的 但对于这个 我不能 请帮助我理解它 我认为这不是一个简单的问题
  • GDB 中的 x86 标签和 LEA

    我正在学习用 x86 汇编 目前为 32 位 进行编码 并且正在努力完全理解内存模型 特别令人困惑的是标签的语义 LEA 指令以及可执行文件的布局 我编写了这个示例程序 以便我可以检查它在 gdb 中的运行情况 mem s SECTION
  • c# 检查文件是否打开

    我需要验证特定文件是否打开以防止复制该文件 我尝试了很多例子 但没有一个起作用 例如 我尝试这样做 protected virtual bool IsFileLocked FileInfo file FileStream stream nu
  • 如何在 Flutter 中像 Hamilton flutter 应用程序一样制作自定义 AppBar?

    像这样 https drive google com file d 1gbs1LAmEfD5NvPlUYlGrh2j9ZLv8ZFQu view usp sharing 我的方法 没有 AppBar 和 body 的脚手架 Stack gt
  • NodeJS 获取remoteAddress 使用的IP

    我有 3 个简单的 NodeJS 服务器 使用 NET HTTP 和 UDP 每个服务器都侦听端口 X 但有多个 IP 地址 我想在客户端连接到服务器时检索服务器的实际IP地址 客户端连接的IP 客户端必须写入才能连接到服务器的IP var
  • Facebook 登录后重定向活动

    我正在使用 Android Facebook SDK 4 01 通过 Facebook 登录我的应用程序 我的 MainActivity 的 facebook 登录成功 然后我使用 Intent 继续下一个活动 那部分有效 之后 在我的新活
  • valarrays 出现奇怪的 C++ 编译错误

    我在 C 中使用 valarrays 时遇到奇怪的编译错误 这是我的代码的精简版本 include
  • Spring MVC 既不是 BindingResult 也不是普通目标

    java lang IllegalStateException BindingResult 和 bean 名称 user 的普通目标对象都不能作为请求属性 所以当我尝试运行此网页时出现此错误 但我不知道为什么 我看到并阅读了很多有关此错误的
  • 检测是否有其他应用程序正在请求麦克风

    我在 SO 上看到了多个问题 这些问题说不可能看到另一个应用程序何时想要使用麦克风 当其他应用程序在 Android 中使用麦克风时 无法访问麦克风 https stackoverflow com questions 24170124 un
  • 如何修复 Android 上 Spongy Castle 的错误:找不到类 java.awt.datatransfer.DataFlavor

    我使用 lib Spongy Castle 在 Android 上对邮件进行签名和加密这个例子 https github com rtyley spongycastle blob spongy master scmail jdk15on s
  • 当多个用户从 asp 会员身份登录时,如何将用户名放入 sql 触发器中

    我正在尝试记录对数据库的所有更改 但无法找到将当前用户名获取到触发器的方法 我有triggerData存储用户信息的表 guid userid data username logintime 这些是在用户登录时插入的 这是触发器 decla
  • Apache HttpClient 添加字节范围标头?

    有谁知道如何在 HTTP 请求中请求字节范围 我希望通过请求下载停止位置的字节范围并从 getContent 读取其 InputStream 来促进应用程序中下载的恢复 我尝试迭代标题 但它们为空 来源如下 import java io I
  • 如何引用现有GeoJSON leaflet对象的数据?

    我们有一个 Leaflet Map 我们正在尝试使用 GeoJSON 构建它 我们的数据来自实时流 因此我们首先使用空数据初始化 GeoJSON var myLayer L geoJson style function feature va
  • 在 Aurelia 中,槽可以用于重复绑定吗?

    我想创建一个循环遍历数组并将其应用于数组中的每个项目的自定义元素 例如 自定义元素的视图模板将包含类似以下内容的内容 div div div div
  • 在 SSL 证书主题字段中添加 ID

    我想知道是否有一种简单的方法可以在创建 SSL 证书时自动生成 全局 唯一 ID 并将其添加到主题字段中 查看 OpenSSL bash 命令 示例将会很有帮助 something along the lines of this 首先 主题