注意:这不是一个真正的问题,因为我已经找到了答案,但是由于我在这里不容易找到它,所以我将其发布,以便它可以使其他人受益。
问题:如何读取连接的 PEM 文件作为 apache/mod_ssl 指令SSLCACertificateFile使用的文件?
答案(原文)(来源):
cat $file|awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Run Code Online (Sandbox Code Playgroud)
如果末尾有一个空行,这可能会留下一个空文件,例如openssl pkcs7 -outform PEM -in my-chain-file -print_certs. 为防止出现这种情况,请在打印前检查行的长度:
cat $file|awk 'split_after==1{n++;split_after=0}
/-----END CERTIFICATE-----/ {split_after=1}
{if(length($0) > 0) print > "cert" n ".pem"}'
Run Code Online (Sandbox Code Playgroud)
回答 29/03/2016:
按照@slugchewer answer,csplit可能是一个更清晰的选择:
csplit -f cert- $file '/-----BEGIN CERTIFICATE-----/' '{*}'
Run Code Online (Sandbox Code Playgroud) 有很多关于这个主题的资源,但我发现没有一个能涵盖这个稍微特殊的情况。
我有 4 个文件;
我希望将它们导入一个新的密钥库。
有的站点建议使用DER格式,并一一导入,但由于无法识别密钥而失败。
另一个站点建议使用一个特殊的“ImportKey”类来运行导入,这一直有效,直到我看到链断裂。即证书上的链长为1,忽略中间和ca。
一些网站建议使用 PKCS7,但我什至无法从中获得链条。其他人建议使用 PKCS12 格式,但就我的测试而言,获取整个链也失败了。
非常欢迎任何建议或提示。
(发布到 ServerFault 而不是 StackOverflow 因为我觉得它更关心操作系统配置而不是编程代码)。
我目前负责维护连接到第三方网络服务的系统。此 Web 服务需要客户端身份验证证书,这很公平,但 Web 服务本身使用由自创建根证书颁发机构证书创建的自签名证书进行保护 - 与创建客户端身份验证证书的根相同。
仅将当前服务证书添加到已知信任列表并忽略自创建的权威证书就足够了,不幸的是,服务证书会定期更改,因此必须信任权威证书以确保应用程序在服务证书已更新。
但是,根据我在运行 Web 服务的公司的经验,我(个人)并不信任 CA 证书 - 如果它会泄露到网络,我不会感到惊讶 - 令人担忧的是,CA 证书没有设置密钥使用限制它(虽然外部 MITM 攻击是可能的,但虽然远程,但我更关心用于代码签名的证书泄露,例如)。
我是否可以告诉我的计算机(当前是服务器盒,但在未来的普通桌面客户端盒中)信任 CA,但仅针对给定的一组密钥用法和一小组可能的主题名称(域名) )?
服务器目前是 Windows Server 2012 R2,但它可以在 Linux 机器上运行 - 尽管台式机都是 Windows 机器。
你能想到任何 linux 命令行方法来保存 HTTPS 服务器提供的证书吗?类似于让 curl/wget/openssl 建立 SSL 连接并保存证书而不是 HTTP 响应内容。
相当于我正在寻找的 gui 是浏览到 HTTPS 站点,双击浏览器“安全站点”图标,然后导出证书。除了这里的目标是非交互式地进行。
谢谢,吉姆
自签名 SSL 证书是一种虚假的安全感吗?
如果您被窃听,用户将像往常一样简单地接受证书。
我可以从根 CA 获得证书,然后我可以用它来签署我自己的 Web 服务器证书吗?如果可能,我会使用签名证书作为中间人来签署其他证书。
我知道我必须使用“我的”中间证书以某种方式配置我的系统,以便向我的客户提供有关信任链的信息。
这可能吗?根 CA 愿意签署这样的证书吗?这个很贵吗?
背景
我熟悉 SSL 的基础知识,因为它与通过 HTTP 保护网络流量有关。我也对信任链的工作方式有基本的了解,因为如果您使用具有有效链的证书进行加密,则“默认情况下”网络流量是安全的,该链一直回到根 CA,由浏览器确定/OS 供应商。
我也知道许多根 CA 已经开始使用中间证书为最终用户(如我)签署证书。这可能需要更多的设置,否则,这些证书将正常工作。我想这与保护他们对 CA 的所有有价值的私钥以及如果我受到威胁将会造成的灾难有关。
例子
现在,我们绝对没有这些组织的规模,但他们似乎正在做这样的事情。这肯定会使这些证书的管理变得更加可口,尤其是考虑到我们正在扩大电子商务平台范围的一种方式。
我正在尝试设置 OCSP 验证例程,因此希望首先适应环境。在例如OpenSSL: Manually verify a certificate against an OCSP 中找到了优秀的教程。
出现多个问题,所以请耐心等待。
自该教程以来发生了一些变化,但我认为要点是:
1)获取您要验证的证书,例如
openssl s_client -connect wikipedia.org:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > wikipedia.pem
Run Code Online (Sandbox Code Playgroud)
2)建立证书链,例如
openssl s_client -connect wikipedia.org:443 -showcerts 2>&1 < /dev/null > chain.pem
Run Code Online (Sandbox Code Playgroud)
然后进行适当的编辑。我发现上面没有提供自签名 CA 证书 GlobalSignRootCA,所以在.
3)确定ocsp URI,例如
openssl x509 -noout -ocsp_uri -in wikipedia.pem
Run Code Online (Sandbox Code Playgroud)
返回
http://ocsp2.globalsign.com/gsorganizationvalsha2g2
Run Code Online (Sandbox Code Playgroud)
4)调用openssl ocsp客户端,例如
openssl ocsp -issuer chain.pem -cert wikipedia.pem -url http://ocsp2.globalsign.com/gsorganizationvalsha2g2
Run Code Online (Sandbox Code Playgroud)
返回
[woody@oc2042275410 testCerts]$ openssl ocsp -issuer chain.pem -cert wikipedia.pem -url http ://ocsp2.globalsign.com/gsorganizationvalsha2g2
Error querying OCSP responsder …Run Code Online (Sandbox Code Playgroud) 有人知道如何配置 IIS Express 以要求客户端证书进行访问吗?我正在尝试调试使用客户端证书进行身份验证的有问题的 ASP.NET 应用程序。
我正在寻找一种从 X509 证书(或 csr)恢复 openssl 配置的方法。我知道可以查看证书并手动重建配置文件,但它不可靠并且需要太多的劳动力:P。
有什么建议么?
我们在这里使用 Paypal SDK:https :
//github.com/paypal/PayPal-NET-SDK
帮助处理我们的网络钩子。我们已经开始收到异常:
PayPal.PayPalException: Unable to verify the certificate(s) found at https://api.paypal.com/v1/notifications/certs/CERT-360caa42-fca2a594-8079afec
at PayPal.CertificateManager.GetCertificatesFromUrl(String certUrl)
at PayPal.Api.WebhookEvent.ValidateReceivedEvent(APIContext apiContext, NameValueCollection requestHeaders, String requestBody, String webhookId)
Run Code Online (Sandbox Code Playgroud)
如果我们检查证书文件,https://api.paypal.com/v1/notifications/certs/CERT-360caa42-fca2a594-8079afec我们会得到文件:
-----BEGIN CERTIFICATE-----
MIIHdzCCBl+gAwIBAgIQBHtmc7f0ru/ozCsjsr2YyjANBgkqhkiG9w0BAQsFADB1
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMTQwMgYDVQQDEytEaWdpQ2VydCBTSEEyIEV4dGVuZGVk
IFZhbGlkYXRpb24gU2VydmVyIENBMB4XDTE5MDMyNzAwMDAwMFoXDTIxMDYwMjEy
MDAwMFowgfUxHTAbBgNVBA8MFFByaXZhdGUgT3JnYW5pemF0aW9uMRMwEQYLKwYB
BAGCNzwCAQMTAlVTMRkwFwYLKwYBBAGCNzwCAQITCERlbGF3YXJlMRAwDgYDVQQF
EwczMDE0MjY3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTERMA8G
A1UEBxMIU2FuIEpvc2UxFTATBgNVBAoTDFBheVBhbCwgSW5jLjEYMBYGA1UECxMP
UGFydG5lciBTdXBwb3J0MSwwKgYDVQQDEyNtZXNzYWdldmVyaWZpY2F0aW9uY2Vy
dHMucGF5cGFsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMKo
k6Zr7AuPwsMwaTfBmv/ECGHU1/hjZ9VAdOBuolrKGql+TZ3NfZsu62Me8sdPuCjJ
R/8KUCJ/FtyFs/gVreg63zDqZLsHLBAR+6OcJR3yOJX1W4Y0ABdMA0i+iZFh/iUx
HHq6CZCnPlS2lvzJaS2UrzJ+mkPhCn1u2NRzys8FSKj/rn9ZLnT7CfgVvzabzobW
GvpHdXk+I3UieKyLkxZxlqJGWKN5KVTbPLU10F7H8RdO0f7deqt3tXT7eHIeEmBQ
6FZUIb3kt6qe4jTugXMqeS4JUiH9mhJTX1bC3PRl2TsnyjqgzKZZNfBXs/3IDHST
RElxn0603HnsWiyxn/ECAwEAAaOCA4AwggN8MB8GA1UdIwQYMBaAFD3TUKXWoK3u
80pgCmXTIdT4+NYPMB0GA1UdDgQWBBSkuNmXUDoHVayujFb0oeloO61qIDAuBgNV
HREEJzAlgiNtZXNzYWdldmVyaWZpY2F0aW9uY2VydHMucGF5cGFsLmNvbTAOBgNV
HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMHUGA1Ud
HwRuMGwwNKAyoDCGLmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9zaGEyLWV2LXNl
cnZlci1nMi5jcmwwNKAyoDCGLmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEy
LWV2LXNlcnZlci1nMi5jcmwwSwYDVR0gBEQwQjA3BglghkgBhv1sAgEwKjAoBggr
BgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAHBgVngQwBATCB
iAYIKwYBBQUHAQEEfDB6MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy
dC5jb20wUgYIKwYBBQUHMAKGRmh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9E
aWdpQ2VydFNIQTJFeHRlbmRlZFZhbGlkYXRpb25TZXJ2ZXJDQS5jcnQwDAYDVR0T
AQH/BAIwADCCAXwGCisGAQQB1nkCBAIEggFsBIIBaAFmAHYAu9nfvB+KcbWTlCOX
qpJ7RzhXlQqrUugakJZkNo4e0YUAAAFpvJhEdQAABAMARzBFAiEAprZz2cWH2zV4
lymEVimmwQUTp6QpeVL6ruCjqr45cp8CIHE2SD079OeyVyXzbN6lcCPAQscdF+to
3rLMebtmZ10dAHUAVhQGmi/XwuzT9eG9RLI+x0Z2ubyZEVzA75SYVdaJ0N0AAAFp
vJhE0QAABAMARjBEAiAboeCw/qNGNi/bQahj4LxufXCoLVDS7p60HpWwCzvo/gIg
C1MRFVPAjxQ8ZW1445+gO/YXt/mxRr1P2ZTGDaI2RKMAdQCHdb/nWXz4jEOZX73z
bv9WjUdWNv9KtWDBtOr/XqCDDwAAAWm8mEabAAAEAwBGMEQCIHGAUX3fYxOY0Kmf
5cE5rFdoBWkugpku5tdQdaHl3XkUAiBn0TtWXdCi2XC8AX9HsfmkUhNRxt0a4Qrc
aRHA2pEBsDANBgkqhkiG9w0BAQsFAAOCAQEAKstIrA+/RYCmv1tiaRwsnyfMeFa/
9axfNcqy/Ip3h4K9uk2R3h2QpOMm19a5+cdYssBXRULMes2Y7+7iCMSlEKug5lq7
1P3DpVZeqg4kkWvirE39Mrr894z9tuthVuDEkOZ99p8vJhoPWXqURCZNaBGTg7qI
xJh1zxoihRW8XYoP/ToX/wFolQcBU19PF25Sb2zx3aio7Nu6aNEAKWI/zavsDJWk
G5HgJsgsqRA2wJSIonhUL+g/Xpmiz0wrDWcj9py2tO6COUBkYwOPVW7DHm3yU7q7
pa7sNAPF/Rb0oxQMQ1lFwEBEIWaIlgRs34zNteZS3JZudGYjLiBvRGDoNA==
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
如果我们检查X509Chain这个证书的 ,它是无效的,错误:
FalseChain …
x509 ×10
openssl ×4
ssl ×4
certificate ×3
https ×2
asp.net ×1
awk ×1
iis-express ×1
keystore ×1
linux ×1
networking ×1
ocsp ×1
security ×1
shell ×1
windows ×1