标签: ca

如何在 C# 中验证来自特定根 CA 的证书链

我有一个如下所示的证书链: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,该怎么办?

c# security ca x509certificate

8
推荐指数
1
解决办法
6428
查看次数

有没有办法检查SSL数字证书是否有效而无需在Web服务器上安装?

是否有任何工具或机制可以帮助验证CA颁发的SSL证书,然后再将其安装到目标Web服务器上?

ssl https ca digital-certificate

7
推荐指数
2
解决办法
2万
查看次数

如何在Java密钥库中创建自己的自签名根证书和中间CA?

如何创建要在Java密钥库中导入的自签名根证书和中间CA?

我们将此用于SSL和TLS,稍后用于基于客户端证书的CLIENT-AUTH身份验证.

使用OpenSSL和KeyTool.请帮忙.

openssl certificate ca self-signed

7
推荐指数
2
解决办法
2万
查看次数

Golang httpClient CA 证书默认位置?

我有一个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。

windows ssl ca go

7
推荐指数
1
解决办法
4717
查看次数

在 mac os 上更新 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)

谁能绕过这个错误?

macos openssl certificate ca

7
推荐指数
0
解决办法
1995
查看次数

CA 证书仅添加到 ca-bundle-trust.crt

环境:

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 …

ssl curl openssl redhat ca

7
推荐指数
1
解决办法
1156
查看次数

OSError:找不到合适的 TLS CA 证书包

当向 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 …

python ssl ca pycharm python-requests

7
推荐指数
1
解决办法
2万
查看次数

主题备用名称不会复制到签名证书

我使用自签名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 ...命令的解决方案.

ssl openssl ca self-signed

6
推荐指数
2
解决办法
2885
查看次数

有没有办法在traefik中导入公司根CA?

我有一个运行着 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)

ssl ca traefik

6
推荐指数
1
解决办法
1014
查看次数

我们可以在超级账本结构中运行没有 tls 的 RAFT 排序节点吗?

我当前的网络没有部署在 Kubernetes 上的 TLS。目前,我们正在从 Kafka (1.4.0) 迁移到 RAFT(1.4.4)。Kubernetes 不需要 TLS。

  1. 是否必须为 RAFT 排序节点启用 TLS?
  2. 如果是,我可以在迁移到 RAFT 时即时启用吗?
  3. 是否可以将 Orderers 配置为仅将 TLS 用于 Raft 通信?

目前,当我更改配置块中的共识并将其发送给订购者时,出现以下错误。

2019-12-09 15:38:02.269 UTC [orderer.common.server] initializeClusterClientConfig -> PANI 208 TLS 需要运行 kafka 类型的排序节点。恐慌:运行 kafka 类型的排序节点需要 TLS。

ca tls1.2 hyperledger hyperledger-fabric

6
推荐指数
1
解决办法
500
查看次数