标签: certificate-revocation

如何使CRL和OSCP检查在iOS上运行?

我无法在iOS上使用CRL。我创建了两个测试用例。我有由CA颁发的有效证书。我有由CA颁发的另一个有效证书,但是CA已将该证书添加到其CRL中。

然后,我设置了一个启用CRL检查并要求成功的吊销策略。

func crlValidationTest(trustedCert: SecCertificate, certToVerify: SecCertificate) -> Bool {

    let basicPolicy = SecPolicyCreateBasicX509()

    let crlPolicy = SecPolicyCreateRevocation(kSecRevocationOCSPMethod | kSecRevocationCRLMethod | kSecRevocationRequirePositiveResponse)!

    var trust: SecTrust?

    SecTrustCreateWithCertificates(NSArray(object: certToVerify), NSArray(objects: basicPolicy, crlPolicy), &trust)
    SecTrustSetAnchorCertificates(trust!, NSArray(object: trustedCert))
    SecTrustSetNetworkFetchAllowed(trust!, true)

    var trustResult = SecTrustResultType.invalid

    guard SecTrustEvaluate(trust!, &trustResult) == errSecSuccess else {
        return false
    }

    return trustResult == SecTrustResultType.proceed || trustResult == SecTrustResultType.unspecified
}
Run Code Online (Sandbox Code Playgroud)

我的期望是CRL上的证书将不受信任,而干净的证书将受到信任。

在上述配置的情况下,两者均会由于不受信任而失败。如果删除该kSecRevocationRequirePositiveResponse标志,则两者均成功。我已经尝试过仅使用OSCP或仅使用CRL的所有不同排列方式,但没有一种能达到我期望的效果。

Apple 的州文件SecPolicyCreateRevocation

除非您希望覆盖默认的系统行为(例如强制使用特定方法或完全禁用吊销检查),否则通常无需自己创建吊销策略。

仅使用该SecPolicyCreateBasicX509策略就可以使两者都成功(当第二个证书应该失败时),那么Apple的默认行为是根本不进行CRL检查吗?

我将CharlesProxy附加到我的设备上,并在侦听所有网络流量的同时多次运行该代码,并且没有出站请求发送到CRL,这解释了为什么RequirePositiveResponse选中该标志时所有请求都失败。

我还尝试使用进行从设备直接导航到CRL的操作URLRequest,并且能够毫无问题地获取设备上的CRL数据。 …

security certificate certificate-revocation ios swift

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

OCSP撤销检查整个证书链

当您请求OCSP服务器检查证书的撤销状态时,它是否会自动检查整个链的撤销状态?

即:如果证明证书"好",那么这意味着整个链条是好的吗?

我阅读了规范:http://www.ietf.org/rfc/rfc2560.txt

但我似乎还不清楚.

维基百科确实提到了链式OCSP请求:

http://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol

security ocsp certificate-revocation ssl-certificate

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

X509Certificate2.Verify()方法,验证撤销列表及其性能影响

我想验证X509证书.我想去X509Certificate2.Verify()方法.

但是,文档并没有说明它验证的所有内容.

  1. 请指导我提供一些文档,其中提供了此方法的详细信息.
  2. Verify()方法是否根据撤销列表验证证书?如果是,如果在线列表不可用或网络不可用怎么办?
  3. 根据撤销列表验证证书时是否会影响性能?

.net certificate-revocation x509certificate2 x509certificate

5
推荐指数
1
解决办法
3943
查看次数

如何使用包含CRL分发点的openssl创建证书?

我在使用openssl创建包含用于测试的crl分发点的x509证书时遇到问题.

我已经检查了文档,并为此找到了配置设置crlDistributionPoints.不幸的是,openssl总是生成x509版本1证书,而不是使用crl分发点而不是版本3证书.我确定我的命令或配置有问题,但仔细阅读文档并使用配置并没有帮助.考虑配置文件中的其他设置,因此我确信openssl使用该文件本身.

我正在使用该命令

openssl x509 -req -in $NAME.csr -out certs/$NAME.pem -days 3650 -CAcreateserial -CA cacert.pem -CAkey private/cakey.pem -CAserial serial
Run Code Online (Sandbox Code Playgroud)

我正在使用以下配置文件:

[ ca ]
default_ca              = CA_default

[ CA_default ]

dir                     = /home/ca
database                = $dir/index.txt
new_certs_dir           = $dir/newcerts

certificate             = $dir/cacert.pem
serial                  = $dir/serial
private_key             = $dir/private/cakey.pem
RANDFILE                = $dir/private/.rand

default_days            = 3650
default_crl_days        = 30
default_md              = md5

policy                  = policy_any
email_in_dn             = no

name_opt                = ca_default
cert_opt                = ca_default
copy_extensions         = none

x509_extensions         = extensions_section

[ extensions_section ] …
Run Code Online (Sandbox Code Playgroud)

openssl certificate-revocation x509

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

javax.security.cert.X509Certificate与java.security.cert.X509Certificate之间不兼容

我想验证客户端针对CRL提供的X509证书,看看它是否已被撤销.我已成功实现了一个java.security.cert.X509CRL,但我在检索会话证书时遇到问题:

try {
    SSLSocket s = (SSLSocket) serverSocket.accept();
    s.setSoTimeout(TIMEOUT_RW * 1000);
    s.startHandshake();
    SSLSession session = s.getSession();
    X509Certificate[] cert = session.getPeerCertificateChain();
    if (crl.isRevoked(cert[0])) {
        System.err.println("Attempted to stablish connection using revoked certificate");
    } else {
        ...
    }
} catch (Exception ex) {
    System.err.println("Something went wrong");
}
Run Code Online (Sandbox Code Playgroud)

SSLSession属于javax.net.ssl 包,其方法getPeerCertificateChain()返回一个javax.security.cert.X509Certificate[],无法转换为java.security.cert.X509Certificate[]我需要提供的包java.security.cert.X509CRL.怎么做到呢?

java ssl certificate-revocation x509certificate

5
推荐指数
1
解决办法
4556
查看次数

使用 Bouncy Castle c# 创建 CRL 文件

我已经使用 Bouncy Castle 构建了我自己的根 CA 证书,并且我正在使用它来构建其他证书。我想使用 Bouncy Castle C# 构建证书吊销列表 (CRL) 以包含吊销证书的列表。例子:

//Retrieve CA root certificate

X509Store CAstore = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
CAstore.Open(OpenFlags.ReadWrite | OpenFlags.OpenExistingOnly);

X509Certificate2Collection x509Certificate2Collection =
CAstore.Certificates.Find(X509FindType.FindBySerialNumber,
                         this.textBoxSerialCA.Text, true);

X509Certificate2 cert = x509Certificate2Collection[0];
var certCA = DotNetUtilities.FromX509Certificate(cert);
CAstore.Close();

X509V2CrlGenerator crlGen = new X509V2CrlGenerator();
crlGen.SetIssuerDN(certCA.IssuerDN);
crlGen.SetThisUpdate(DateTime.Now);
crlGen.SetNextUpdate(DateTime.Now.AddYears(1));
crlGen.SetSignatureAlgorithm("SHA1withRSA");

crlGen.AddCrlEntry(BigInteger.One, DateTime.Now, CrlReason.PrivilegeWithdrawn);

crlGen.AddExtension(X509Extensions.AuthorityKeyIdentifier,
                   false, 
                   new AuthorityKeyIdentifierStructure(certCA));

crlGen.AddExtension(X509Extensions.CrlNumber,
                   false, 
                   new CrlNumber(BigInteger.One));

var randomGenerator = new CryptoApiRandomGenerator();
var random = new SecureRandom(randomGenerator);

var Akp = Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair(cert.PrivateKey).Private;                


X509Crl crlTemp = crlGen.Generate(Akp,random);
Run Code Online (Sandbox Code Playgroud)

一切都好,直到这一点。如何将 X509Crl …

c# bouncycastle certificate-revocation

5
推荐指数
1
解决办法
3077
查看次数

撤销过期的证书

撤销过期的证书是一个好方法吗?

过期的证书被视为无效证书,但可以撤销它。既然可以撤销它,那么这应该是 CA 的有效方法。

CA是否没有考虑它是否被撤销以及它会如何影响证书的使用方式。

certificate certificate-authority certificate-revocation

5
推荐指数
1
解决办法
6390
查看次数

Java SSL证书撤销检查

我目前正在使用SSL编写网络TCP服务器.在生产中,我们最终会要求客户使用证书进行身份验证.

为了在紧急情况下撤销证书,我们还想建立一个CRL.

我的问题是:Java是否开箱即用检查CRL(如果提供证书)或者我是否需要手动实施此类检查?

为了测试,我准备了一个带有CRL集的证书,但是Java似乎没有尝试验证它(我将它放入本地Web服务器并且没有访问权限).

我只找到了com.sun.net.ssl.checkRevocation = true VM选项,但显然它不查询CRL.设置为java.security.debug = certpath的 VM调试不会生成任何输出,要么......

Java似乎在其子系统中有相关的类(例如java.security.cert.X509CRLSelector),但它显然没有发挥作用.

我使用Apache Mina作为客户端服务器编写了一个小型的maven风格的项目,它基于密钥/信任库和客户端/服务器的自签名证书初始化SSLContext,可以在这里以ZIP存档的形式下载:https://www.dropbox.com /s/3fqmd1v9mn2a5ve/ssltest.zip?dl=0

java ssl certificate-revocation

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

是否有(简单)方法在Python中解析CRL?

我正在尝试做一些愚蠢的事情:加载CRL并输出已撤销的证书序列号列表.

使用M2Crypto加载CRL完成:

import M2Crypto
crl = M2crypto.X509.load_crl('my.crl')
Run Code Online (Sandbox Code Playgroud)

但我真的很惊讶返回的对象只有一个有用的

crl.as_text()
Run Code Online (Sandbox Code Playgroud)

使用一些正则表达式,我可以解析输出以检索已撤销的连续出版物.但还有另一种方法吗?

有关信息,这是一个经典的CRL as_text输出.

Certificate Revocation List (CRL):
        Version 2 (0x1)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: /C=FR/ST=IDF/L=Paris/O=XXXXX/OU=XXXXX/CN=XXXXX Certificate Authority
        Last Update: Nov  6 21:49:51 2010 GMT
        Next Update: Nov  7 21:49:51 2010 GMT
Revoked Certificates:
    Serial Number: 02
        Revocation Date: Aug 10 15:40:09 2010 GMT
    Serial Number: 03
        Revocation Date: Sep  9 15:12:24 2010 GMT
    Serial Number: 05
        Revocation Date: Aug 17 14:18:22 2010 GMT
    Serial Number: 06
        Revocation Date: Aug 18 08:57:15 …
Run Code Online (Sandbox Code Playgroud)

python pki certificate-revocation x509

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

如何仅从CRL检查撤销列表?

我正在使用WinVerifyTrust来验证文件签名.

与互联网的连接非常糟糕,所以我想只检查本地缓存.

问题是我对如何在WinTrustData中设置参数感到困惑

关于fdwRevocationChecks - 文档如下:

当WTD_REVOKE_NONE标志与WinVerifyTrust函数的pgActionID参数中设置的HTTPSPROV_ACTION值一起使用时,不会进行额外的吊销检查.要确保WinVerifyTrust函数在验证代码签名时不尝试任何网络检索,必须在dwProvFlags参数中设置WTD_CACHE_ONLY_URL_RETRIEVAL.

它是什么意思"没有额外的撤销检查" - 除了什么?它是否使用CRL进行撤销检查?如果我将此字段设置为*WTD_REVOKE_WHOLECHAIN*它也将在线检查吗?

如果我设置WTD_CACHE_ONLY_URL_RETRIEVAL就足够了,以确保它不会尝试从互联网上获取撤销列表?

底线:我如何确保 CRL检查,但没有任何在线检查.

谢谢

certificate-revocation winverifytrust

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