标签: ca

验证errorcode = 20:无法获得本地颁发者证书

我在服务器上有一个证书链:

Certificate chain
 0 s:/******/O=Foobar International BV/OU****
   i:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/****

 1 s:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/****
   i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=**** - G5

 2 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=**** - G5
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
Run Code Online (Sandbox Code Playgroud)

我的本地根CA证书是:

   s:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/****
   i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=**** - G5
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码段来验证证书:

//gcc -lssl -lcrypto -o certverify certverify.c 

#include <openssl/ssl.h>
#include <openssl/asn1.h>
#include <openssl/bio.h>
#include <openssl/x509.h>
#include <openssl/x509_vfy.h>
#include <openssl/pem.h>
#include <openssl/x509v3.h>
#include <openssl/err.h>
#include <openssl/conf.h>
#include <string.h>

int main() {

  const char ca_bundlestr[] …
Run Code Online (Sandbox Code Playgroud)

ssl openssl ca ssl-certificate x509

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

在 WebView loadUrl() 中信任证书颁发机构

根据安全扫描程序的结果,我需要限制应用程序信任的证书颁发机构。

扫描结果指出 处的线webView.loadUrl("https://example.com/page");。我看到了如何创建一个使用我的 TrustManager 的 SslSocketFactory,但我在 WebView 中没有看到允许我设置它的 API。

https://developer.android.com/training/articles/security-ssl.html#UnknownCa

有哪些可能的方法来实现这一目标?

android ca ssl-certificate x509certificate android-webview

3
推荐指数
1
解决办法
6423
查看次数

如何为微服务创建公钥存储?

我在 docker 环境中实现了一组微服务。这些服务中的每一个都使用 JWT 令牌相互通信。当服务 A 调用服务 B 时

  1. 服务 A,使用他的私钥签署令牌并传递给服务 B
  2. 服务 B,从公钥存储中获取服务 A 的公钥并验证令牌

公钥/私钥生成过程由微服务本身完成,然后他们将公钥传递给公钥存储。所以公钥存储唯一要做的事情,

  1. 存储服务发送的公钥
  2. 根据请求向服务发送正确的公钥

我将要做的类似于此图中显示的内容。

我得到了这张图片

我从上面的图片中得到:https : //www.youtube.com/watch?v=dBdZrw2pPvc&t=462s

所以我的问题是,这种公钥存储是否有任何标准实现?如果有,它们是什么?

security ca pki docker microservices

3
推荐指数
2
解决办法
1571
查看次数

导入证书或链时java keytool命令的区别

只是想将这个问题作为“澄清”而不是决议提出:

java keytool 有-importcert-trustcacertsarg的命令。来自官方帮助指南。

从 CA 导入证书回复

导入对您提交证书签名请求的 CA 的公钥进行身份验证的证书后(或 cacerts 文件中已经有这样的证书),您可以导入证书回复并将您的自签名证书替换为证书链。此链是 CA 为响应您的请求而返回的链(当 CA 回复是链时),或者是使用证书回复和已在导入回复的密钥库或 cacerts 密钥库文件中的密钥库。

例如,如果您向 VeriSign 发送了证书签名请求,那么您可以使用以下内容导入回复,假设返回的证书名为 VSMarkJ.cer:

keytool -importcert -trustcacerts -file VSMarkJ.cer

我还从keytool文档中阅读了以下内容:

如果回复是单个 X.509 证书,keytool 会尝试建立信任链,从证书回复开始到自签名证书(属于根 CA)结束。证书回复和用于验证证书回复的证书层次构成了新的别名证书链。如果无法建立信任链,则不会导入证书回复。在这种情况下,keytool 不会打印出证书并提示用户验证它,因为用户很难(如果不是不可能的话)确定证书回复的真实性。

如果回复是 PKCS#7 格式的证书链,则在 keytool 尝试将回复中提供的根 CA 证书与任何密钥库或“cacerts”密钥库文件中的可信证书(如果指定了 -trustcacerts 选项)。如果找不到匹配项,则打印出根 CA 证书的信息,并提示用户对其进行验证,例如,通过将显示的证书指纹与从其他(受信任的)信息源获得的指纹进行比较,从而可能是根 CA 本身。然后用户可以选择中止导入操作。但是,如果提供了 -noprompt 选项,则不会与用户进行交互。

如果我收到带有根 CA 和我签署的证书的证书回复,哪个是我正确导入证书的正确命令(或者以下所有内容都将根据根 CA 的可用性工作):

# Assuming doesn't exist at all
keytool -import -keystore server_keystore.jks -storepass pass -alias rootCA -file ca-cert-file
keytool -import -keystore server_keystore.jks …
Run Code Online (Sandbox Code Playgroud)

java certificate ca keystore keytool

3
推荐指数
1
解决办法
3467
查看次数

如何允许 s3 存储桶上的 GetBucketLocation 协议以创建 CA

为了更新 AWS 上的 SSL 证书,CSR 需要 CA。

当我尝试配置和创建 CA 时,我收到以下信息:

ValidationException ACM 私有 CA 服务主体“acm-pca.amazonaws.com”需要 S3 存储桶“MyBucket”的“s3:GetBucketLocation”权限。检查您的 S3 存储桶权限并重试

要继续此操作,请在 Amazon S3 > MyBucket > 权限 > 存储桶策略上进行权限设置:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::MyBucket/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

根据文档,可以在这里找到: https: //docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html

LocationConstraint是必须的。

如何解决“s3:GetBucketLocation”问题并创建 CA?

ca csr amazon-s3 amazon-web-services

3
推荐指数
1
解决办法
7900
查看次数

证书签名请求:它包含公钥还是私钥?

我试图揭开 CSR 的生成方式以及公钥和私钥的作用。

服务器1:

  • 生成公钥和私钥

现在,我想要 CSR,为此,我将去 CA 进行签名。

创建 CSR 请求时,是基于服务器的公钥还是私钥?

我提到了这个SO问题;其中,它表示服务器(正在请求 CSR)本身在将其发送到 CA 之前通过其私钥签署 CSR。

我有点困惑,有以下问题:

  • 最终产品(CA 签名的证书):它包含服务器的私钥还是公钥?据我了解,最终产品应包含请求 CSR 的服务器的公钥。

  • 服务器发起CSR请求时,为什么需要用私钥对CSR进行签名?这是对的吗?

  • 服务器的公钥是 CSR 的一部分吗?

  • 最终,CA是否根据CSR生成证书以及如何从CSR导出服务器的公钥?

ssl ca csr public-key private-key

3
推荐指数
1
解决办法
6270
查看次数

如何设置Dart以使用CA SSL证书?

我最近部署了一个服务于HTTP请求的Dart服务器应用程序.我想添加对HTTPS的支持,所以我一直在尝试将SSL添加到Dart服务器应用程序中.

此答案清楚地说明了如何向Dart添加自签名SSL证书.但是,我想添加一个从SSL提供商处购买的SSL证书.

SSL提供商通过电子邮件发送了我的4个文件:

  • 根CA证书 - AddTrustExternalCARoot.crt
  • 中级CA证书 - COMODORSAAddTrustCA.crt
  • 中级CA证书 - COMODORSADomainValidationSecureServerCA.crt
  • 您的PositiveSSL证书 - my_domain.crt

我一直在试图弄清楚如何certutil工作以及如何将这些证书添加到证书数据库中,但我无法理解这一切.

有能力在Dart中启用CA SSL证书的任何人吗?

已解决:感谢评论中的建议,我解决了这个问题.这是我完整设置的要点:https://gist.github.com/stevenroose/e6abde14258971eae982

ssl https ca dart

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

CA 认证标志过程中 RDN 属性的排序

我很难理解 RDN (RelativeDistinguishedName) 中属性 (AttributeTypeAndValue) 的顺序。

以下是相关的 ASN.1 定义(取自www.in2eps.com):

TBSC证书

TBSCertificate ::= SEQUENCE {
    [...]
    subject    Name,
    [...]
}
Run Code Online (Sandbox Code Playgroud)

姓名

Name ::= CHOICE {
    rdnSequence RDNSequence
}
Run Code Online (Sandbox Code Playgroud)

RDN序列

RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
Run Code Online (Sandbox Code Playgroud)

相对专有名称

RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue
Run Code Online (Sandbox Code Playgroud)

属性类型和值

AttributeTypeAndValue ::= SEQUENCE {
    type AttributeType,
    value AttributeValue
}
Run Code Online (Sandbox Code Playgroud)

属性类型

AttributeType ::= OBJECT IDENTIFIER
Run Code Online (Sandbox Code Playgroud)

属性值

AttributeValue ::= ANY -- DEFINED BY AttributeType
Run Code Online (Sandbox Code Playgroud)

如果我创建了一个包含“/CN=CommonNameX/O=OrganizationX/...”(按照这个特定顺序)的 CSR,CA 如何从中构建证书?

将主题设置为“.../O=OrganizationX/CN=CommonNameX/”(以相反的顺序相同)时,将如何构建证书?

据我所知,在验证证书链时,RDN 属性的顺序很重要。因此,我假设一定有一些详细的规范可用?

更重要的是,我还想知道是否有不同的 CA 使用不同的顺序。如果是这样,有人可以指出一些 CA 吗?

编辑: …

ssl certificate ca distinguishedname x509

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

如何将 .pem ssl 证书用于作为 Spring Boot 应用程序开发的 rest api

我们有一个用于其余 Web 服务的 Spring Boot 应用程序,该应用程序仍在开发中。我们现在使用自签名证书。

现在,它将与 1 个已开发的应用程序一起部署在一个系统中。默认情况下,此预先存在的应用程序使用自签名证书,但如果需要,客户端可以选择上传 CA 证书。现在,我们要为这个新应用程序使用相同的证书。

基本上,我们希望客户端为 1 个系统中运行的 2 个应用程序使用 1 个证书。

现在,此现有应用程序具有证书文件,如 .pem 和 .cer。现在,我如何在使用 jks 格式的证书的 Spring Boot 应用程序中使用此证书。

当然,如果有任何更新,证书应该对两个应用程序都可用。

java ssl spring ca spring-boot

2
推荐指数
3
解决办法
7448
查看次数

如何将 OpenSSL 用于具有自定义 CA 和适当 SAN 设置的自签名证书?

我偶尔遇到这个话题,试图记住这是如何完成的,然后再次找到所有不完整的答案(使用配置文件、oneliners,忽略我们真的想使用自定义 CA 来创建完整的证书链等) . 许多答案将 SAN 应用于证书请求,但在签名命令中将 SAN 搞砸了......

我想做的事?

  1. 创建自定义 CA
  2. 创建证书请求。
  3. 签署证书请求。
  4. 创建链文件
  5. Firefox/Chrome 中的其他步骤(是的,Chrome 需要 SAN)

(是的,请不要在一个命令中做所有事情,我希望我的 CA 驻留在另一台机器上)(是的,这对于其他人来说可能再次不完整。但这正是我每年需要 1-2 次,当我的 DEV 环境中的简单自签名证书,我只是通过配置信任,是不够的)(是的,您可能想要实施额外的验证步骤,如果您不是作为一个人请求和签署证书的人)

问候帕特里克

linux openssl certificate ca x509

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