我有一个如下所示的证书链:root CA -> intermediate CA -> client certificate
。如何验证收到的证书是否是由“根 CA”显式创建的?
验证整个链条不是问题。这可以这样做:
X509Certificate2 rootCert = new X509Certificate2(rootCertFile);
X509Certificate2 intermediateCert = new X509Certificate2(intermediateCertFile);
X509Certificate2 clientCert = new X509Certificate2(clientCertFile);
chain.ChainPolicy.ExtraStore.Add(rootCert);
chain.ChainPolicy.ExtraStore.Add(intermediateCert);
if(chain.Build(clientCert))
{
// ... chain is valid
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是证书根据(Windows)证书存储进行验证,但我只想根据特定的根 CA 对其进行验证。
我还认为可以检查是否chain.ChainElements
包含我期望的根 CA。但是,如果有人从不同的根 CA 向我发送一条有效链并仅添加我期望的根 CA,该怎么办?
是否有任何工具或机制可以帮助验证CA颁发的SSL证书,然后再将其安装到目标Web服务器上?
如何创建要在Java密钥库中导入的自签名根证书和中间CA?
我们将此用于SSL和TLS,稍后用于基于客户端证书的CLIENT-AUTH身份验证.
使用OpenSSL和KeyTool.请帮忙.
我有一个go
程序使用httpClient
(全部由 生成swagger-codegen
)连接到内部 API。
内部 API 使用https
我们内部 CA 的内部证书。
在我的 Windows 笔记本电脑上,无需指定任何 CA 即可正常工作。
在 Linux 服务器上,它会失败并出现x509: certificate signed by unknown authority
错误。
我相信我们的 Windows 企业笔记本电脑默认安装了 CA,并且golang
无需任何配置即可获取这些 CA。
因此,我想知道go
在 Linux 和 Windows 上检查 CA 的位置,以便我可以比较两个操作系统之间的设置并在 Linux 上安装正确的 CA。
mac os环境下我不是很熟悉,但是我尝试按照这个页面上的说明更新ca-certificates来解决一个错误:https : //confluence.ecmwf.int/display/WEBAPI/Web-API+故障排除要点 3.1.2.3。
我创建了文件~/new-root-certificate.crt
,然后运行:
alert:~ Me$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/new-root-certificate.crt
SecCertificateCreateFromData: One or more parameters passed to a function were not valid.
Error reading file /Users/Gino/new-root-certificate.crt
Run Code Online (Sandbox Code Playgroud)
谁能绕过这个错误?
环境:
Red Hat Enterprise Linux Server release 7.7 (Maipo)
# openssl version
OpenSSL 1.0.2g 1 Mar 2016
Run Code Online (Sandbox Code Playgroud)
所以使用 OpenSSL 生成自签名证书,并将 cacert.pem 放在/etc/pki/ca-trust/source/anchors/
.
现在根据 man from 的说法update-ca-trust
,应该运行 cmd 将证书添加到信任库中,并且证书将被添加到/etc/pki/ca-trust/extracted/
.
运行上述 cmd 后,我看到证书仅添加到/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
. 但是像 curl 这样的大多数应用程序都引用了/etc/pki/ca-trust/extracted/openssl/ca-bundle.crt
链接到/etc/pki/tls/certs/ca-bundle.crt
.
curl -v https://172.21.19.92/api
* About to connect() to 172.21.19.92 port 443 (#0)
* Trying 172.21.19.92...
* Connected to 172.21.19.92 (172.21.19.92) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
我知道传递--cacert …
当向 binance 发出 Api 请求时,在使用 pyinstaller 将 main.py 构建为 exe 后,出现以下错误:
OSError: Could not find a suitable TLS CA certificate bundle, invalid path: C:\Users\ADMINI~1\AppData\Local\Temp\2\_MEI76602\certifi\cacert.pem
Run Code Online (Sandbox Code Playgroud)
在我运行机器人的服务器上以及本地计算机上:
OSError: Could not find a suitable TLS CA certificate bundle, invalid path: C:\Users\USER\PycharmProjects\pythonproject2\dist\cacert.pem
Run Code Online (Sandbox Code Playgroud)
两者错误的确切位置是:
File "requests\adapters.py", line 227, in cert_verify
Run Code Online (Sandbox Code Playgroud)
在服务器上,程序已经连续运行了一个多星期,没有出现任何问题,直到两天前我开始收到 OSError 错误。但只有 API 调用才会导致错误,程序仍在运行,websocket 仍在接收数据。
我尝试在 python requests 的接受答案中添加代码,当转换为 .exe 时找不到带有证书的文件夹
我也尝试过:
pip config set global.cert "path\to\cacert.pem"
Run Code Online (Sandbox Code Playgroud)
具有 cacert.pem 的正确路径,发现使用
python -c "import certifi; print(certifi.where())"
Run Code Online (Sandbox Code Playgroud)
这些都不起作用,目前我发现的唯一解决方法是将 cacert.pem 文件手动复制到 OSError 表示正在寻找它的位置(cacert.pem 文件)。
但我以前从未这样做过。最近我更新了我的 python …
我使用自签名CA证书来签署其他证书.对于某些证书,我需要指定主题替代名称.我可以在请求生成期间指定它们(openssl req ...
),我在.csr文件中看到它们.然后我使用CA证书进行签名
openssl x509 -req -extensions x509v3_config -days 365 -in ${name}.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out ${name}.crt
Run Code Online (Sandbox Code Playgroud)
以及openssl.cnf文件中的下一节:
[ x509 ]
x509_extensions = x509v3_config
[ x509v3_config ]
copy_extensions = copy
Run Code Online (Sandbox Code Playgroud)
但我在.crt文件中看不到SAN.
我知道有关命令的解决方案,openssl ca ...
但我没有有效的[ca]
部分,我不想复制/粘贴它而不深入了解它的作用.所以我希望存在另一个带openssl x509 ...
命令的解决方案.
我有一个运行着 traefik 的 docker swarm,我希望能够在 https 中为 Grafana 提供服务,而目前在 http 中。
我尝试使用以下 traefik compose 配置:
version: "3.6"
services:
traefik:
image: traefik
command:
- --defaultentrypoints=http,https
- --docker
- --docker.swarmMode
- --docker.exposedByDefault=false
- --docker.domain=sdb.it
- --docker.watch
- --entryPoints=Name:http Address::80
- --entryPoints=Name:https Address::443 clientCA:/etc/ssl/certs/rootca.crt TLS:/etc/ssl/certs/sonarqube.crt,/etc/ssl/certs/sonarqube.key;/etc/ssl/certs/sdbit-grafana.pem,/etc/ssl/certs/sdbit-grafana.key
- --rootcas=/etc/ssl/certs/rootca.crt
- --insecureskipverify
- --logLevel=DEBUG
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 80:80
- 443:443
networks:
- traefik
secrets:
- source: sdbit-sonarqube-docker.sdb.it.crt
target: /etc/ssl/certs/sonarqube.crt
mode: 644
- source: sdbit-sonarqube-docker.sdb.it.key
target: /etc/ssl/certs/sonarqube.key
mode: 644
- source: sdbit-grafana.sdb.it.pem
target: /etc/ssl/certs/sdbit-grafana.pem
mode: …
Run Code Online (Sandbox Code Playgroud) 我当前的网络没有部署在 Kubernetes 上的 TLS。目前,我们正在从 Kafka (1.4.0) 迁移到 RAFT(1.4.4)。Kubernetes 不需要 TLS。
目前,当我更改配置块中的共识并将其发送给订购者时,出现以下错误。
2019-12-09 15:38:02.269 UTC [orderer.common.server] initializeClusterClientConfig -> PANI 208 TLS 需要运行 kafka 类型的排序节点。恐慌:运行 kafka 类型的排序节点需要 TLS。