我有一个 PEM 格式的 SSL CRT 文件。有没有办法可以从命令行中的证书中提取通用名称 (CN)?
我有一个终端实体/服务器证书,它有一个中间证书和根证书。当我cat在最终实体证书上时,我只看到一个BEGIN和END标签。它是唯一的最终实体证书。
有什么办法可以查看中间证书和根证书内容。我只需要BEGIN和END标签的内容。
在 Windows 中,我可以从“认证路径”中看到完整的证书链。下面是 Stack Exchange 证书的示例。
从那里我可以执行查看证书并导出它们。我可以在 Windows 中为 root 和中级用户做到这一点。我正在 Linux 中寻找相同的方法。
我有一个包含完整证书链和私钥的 PKCS12 文件。我需要将它分成 3 个文件用于应用程序。我需要的3个文件如下(PEM格式):
这是我必须执行的一项常见任务,因此我正在寻找一种无需手动编辑输出即可完成此任务的方法。
我尝试了以下方法:
openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是,输出包含包属性,应用程序不知道如何处理。
经过一番搜索,我找到了一个建议的解决方案,即通过 x509 传递结果以去除包属性。
openssl x509 -in <clientcert.cer> -out <clientcert.cer>
Run Code Online (Sandbox Code Playgroud)
这有效,但我遇到了 cacert 文件的问题。输出文件仅包含链中的 3 个证书之一。
有没有办法避免在 pkcs12 命令的输出中包含包属性,或者有没有办法让 x509 命令输出包含所有证书?此外,如果通过 x509 运行它是最简单的解决方案,有没有办法将 pkcs12 的输出通过管道传输到 x509 而不是两次写出文件?
所以我正在设置一个启用了 SSL 的 nginx 服务器,服务器定义类似于:
server {
listen :80;
listen [::]:80;
server_name example.org;
root /foo/bar;
ssl on;
ssl_certificate /path/to/public/certificate;
ssl_certificate_key /path/to/private/key;
...
}
Run Code Online (Sandbox Code Playgroud)
你明白了(请原谅任何错别字)。
无论如何,我想知道的是;如果我更新我的证书,有没有办法安装它们而不必重新启动 nginx?
例如,如果我要使用来自/path/to/public/certificate和 的符号链接/path/to/private/key,指向我当前的证书,nginx如果我只是将它们更改为指向新的(更新的)证书,我是否还需要重新启动?有替代品吗?
我正在玩弄一个 Puppet 代理和一个 Puppet 主机,我注意到 Puppet 证书实用程序为我的代理的公钥提供了指纹,因为它要求签名:
$ puppet cert list
"dockerduck" (SHA256) 1D:72:C5:42:A5:F4:1C:46:35:DB:65:66:B8:B8:06:28:7A:D4:40:FA:D2:D5:05:1A:8F:43:60:6C:CA:D1:FF:79
Run Code Online (Sandbox Code Playgroud)
我如何验证这是正确的密钥?
在 Puppet 代理上,使用 asha256sum给了我截然不同的东西:
$ sha256sum /var/lib/puppet/ssl/public_keys/dockerduck.pem
f1f1d198073c420af466ec05d3204752aaa59ebe3a2f593114da711a8897efa3
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话,证书会在实际的密钥文件中提供其公钥的校验和。我怎样才能访问钥匙指纹?
我想动态创建具有任意开始和结束日期的自签名证书,包括过去的结束日期。我更喜欢使用标准工具,例如 OpenSSL,但任何能完成工作的东西都会很棒。
Stack Overflow 问题如何生成不到一天到期的 openssl 证书?问了一个类似的问题,但我希望我的证书是自签名的。
如果您想知道,自动化测试需要证书。
我无法使用 wget 或 curl 打开任何 https URL:
$ wget https://www.python.org
--2015-04-27 17:17:33-- https://www.python.org/
Resolving www.python.org (www.python.org)... 103.245.222.223
Connecting to www.python.org (www.python.org)|103.245.222.223|:443... connected.
ERROR: cannot verify www.python.org's certificate, issued by "/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA":
Unable to locally verify the issuer's authority.
To connect to www.python.org insecurely, use '--no-check-certificate'.
$ curl https://www.python.org
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
curl performs SSL certificate verification by default, using a "bundle"
of Certificate …Run Code Online (Sandbox Code Playgroud) 我使用密码和以下字段作为 root
openssl req -x509 -days 365 -newkey rsa:2048 -keyout /etc/ssl/apache.key \
-out /etc/ssl/apache.crt
Run Code Online (Sandbox Code Playgroud)
字段
Country: FI
State: Pirkanmaa
Locality: Tampere
Organization: masi
Organizational Unit Name: SSL Certificate Test
CommonName: 192.168.1.107/owncloud
EmailAddress: masi@gmail.com
Run Code Online (Sandbox Code Playgroud)
输出:HTTPS 中的 SSL 握手错误。预期输出:HTTPS 连接。HTTP 有效。
CommonName 应该包括你想去的 URL,owncloud's thread here。我在 commonname 中尝试失败
192.168.1.107/owncloud192.168.1.107/服务器的测试操作系统:Debian 8.5。
服务器:树莓派 3b。自己的云服务器:8.2.5。自己的云客户端:2.1.1。系统客户端:Debian 8.5。
我可以使用以下命令来显示 PEM 文件中的证书:
openssl x509 -in cert.pem -noout -text
Run Code Online (Sandbox Code Playgroud)
但它只会显示第一个证书的信息。PEM 文件还可能包含证书链。如何显示所有包含的证书?
在 Fedora 上,我指的是当您转到设置 > 管理证书 > 权限选项卡时显示的列表。
我读过它应该在 NSS 共享数据库中,但此命令返回一个空列表:
[laurent@localhost nssdb]$ certutil -d sql:$HOME/.pki/nssdb -L
Run Code Online (Sandbox Code Playgroud)