标签: client-certificates

Ruby 1.8.7和Net :: HTTP:使用客户端证书发出SSL GET请求?

我正在尝试通过 SSL 获取资源Net::HTTP.这是相关的代码片段:

req = Net::HTTP::Get.new(ContentURI.path)
https = Net::HTTP.new(ContentURI.host, ContentURI.port)
https.use_ssl = true
https.cert = OpenSSL::X509::Certificate.new(@cert_raw)
https.key = OpenSSL::PKey::RSA.new(@cert_key_raw)
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.ca_file = File.join(TestDataPath, 'cacert.pem')
resp = https.start { |cx| cx.request(req) }
Run Code Online (Sandbox Code Playgroud)

或者使用备用的最后一行:

resp = https.get(ContentURI.path)
Run Code Online (Sandbox Code Playgroud)

我已经验证了各种位(证书,密钥,CA证书)是正确的.

问题是cx.request(req)抛出一个异常:

OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server session ticket A
Run Code Online (Sandbox Code Playgroud)

服务器上的Apache SSL错误日志包含以下内容:

[Tue Jan 24 11:47:26 2012] [debug] ssl_engine_kernel.c(1876): OpenSSL: Loop: SSLv3 read finished A
[Tue Jan 24 11:47:26 2012] [debug] ssl_engine_kernel.c(1905): OpenSSL: …
Run Code Online (Sandbox Code Playgroud)

ruby ssl certificate client-certificates net-http

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

是否可以在我的应用程序中使用安装在iOS设备上的客户端证书?

我希望能够安装客户端证书(例如通过电子邮件),然后使用该证书对我的应用程序发送的请求进行身份验证.我觉得Apple不会允许这种访问,但找不到任何明确的答案.是真的,还是有办法从应用程序中访问设备上安装的客户端证书?

编辑:为了澄清,这是一个本机应用程序,而不是一个webapp.

certificate pki client-certificates ios

9
推荐指数
1
解决办法
2348
查看次数

带SSL的C#异步Tcp服务器.如何与iOS NSStream进行相互身份验证?

这是我在stackoverflow.com的第一篇文章,所以如果我做错了,请告诉我.所以就这个问题.

我有一个C#正在运行的服务器System.Net.Socket类似于微软提供的示例代码接在这里.

我也有一个Objective-CiPad的客户端运行NSInputStream/NSOutputStream必然CFReadStream/CFWriteStream.

目前只有通过XML Serialized Object客户端和服务器发送的用户名/密码认证可以毫无问题地进行通信.

我现在面临的问题是通信必须是安全的,并且与客户交谈SSL encryption是可以接受的.但是,我不认为他们会接受"服务器证书"这么好.所以我试图让iPad客户端使用"客户端证书".我想启用真正的相互身份验证.

如果我无法实现相互身份验证,第三方VPN软件可能是确保通信安全的更好解决方案.

我还没有完成转换,但是我发现了一些文章给了我很好的例子,但是没有适合我在iPad上的客户端证书情况的例子.我找到的样本是:

C#SSL Tcp服务器

Apple Developer站点,显示如何使用SSL,但没有客户端证书

iPad SSL Stream没有客户端证书.

iPad SSL Stream没有客户端证书

使用客户端证书的iPad HTTP客户端

基本上,系统必须最终TCPSSL嵌入式系统进行通信,并具有管理证书的能力.不确定它是否有所作为,但由于这将涉及许多不同的客户端,因此最好SSL 3.0TLS(和任何版本)兼容.

由于我Objective-C过去6个月只涉足并且更熟悉C#,我可能需要您用更简单的术语解释您的答案.

编辑:
我更关注Objective-C等式的一面,因为我相信这C#方面会很简单.基本上我需要有人解释如何在上面实现客户端证书TCP NSStream,Objective-C或指向我可能的解决方案或方法来解决问题.

任何帮助将不胜感激.

克里斯

c# cross-platform client-certificates ssl-certificate ios

9
推荐指数
1
解决办法
1209
查看次数

Windows 8 Phone Client Certificate HTTPS authentication

I am trying to access a secure HTTPS server using client certificate from a Windows 8 Phone app I am developing. This does not work at all which has has made me try to access the HTTPS server from the standard web browser where it does not work either. I do not know if Internet Explorer can handle client certificates or not. If it does not handle them I would be very interested in some sample code for c# .NET …

ssl https client-certificates wireshark windows-phone-8

9
推荐指数
1
解决办法
7786
查看次数

尝试运行pvk2pfx.exe文件时出现文件未找到错误

我正在尝试创建简单的客户端证书,为此我按照以下链接...

如何创建客户端证书

我在机器上安装了SDK,并且我已成功运行以下两个命令.

makecert.exe -r -n "CN=My Personal CA" -pe -sv MyPersonalCA.pvk -a sha1 -len 2048 -b 01/21/2010 -e 01/21/2016 -cy authority MyPersonalCA.cer


makecert.exe -iv MyPersonalCA.pvk -ic MyPersonalCA.cer -n "CN=John Doe" -pe -sv JohnDoe.pvk -a sha1 -len 2048 -b 01/21/2010 -e 01/21/2016 -sky exchange JohnDoe.cer -eku 1.3.6.1.5.5.7.3.2
Run Code Online (Sandbox Code Playgroud)

成功运行这两个命令后,当我尝试运行第三个命令时,我收到错误"File Not Found"(错误代码= 0x80070002).

第三个命令是

pvk2pfx.exe -pvk JohnDoe.pvk -spc JohnDoe.cer -pfx JohnDoe.pfx -po password 
Run Code Online (Sandbox Code Playgroud)

问题是什么?

authentication iis-7 client-certificates makecert x509certificate

9
推荐指数
0
解决办法
1237
查看次数

如何在nginx中为每个位置设置ssl_verify_client

我想在每个位置的基础上设置ssl_verify_client nginx配置值.这似乎尚不支持:

http://trac.nginx.org/nginx/ticket/317

人们正在使用其他任何解决方法吗?

想要这样做的动机是创建一个受TLS相互认证保护的API; 但是,标准Web浏览器将使用相同的HTTPS端口,出于部署复杂性的原因,预计不会有客户端证书.此外,nginx反向代理我们的WebSockets并打开ssl_verify_client,在我尝试过的大多数Web浏览器上都会破坏WebSockets.

ssl nginx client-certificates

9
推荐指数
0
解决办法
2618
查看次数

如何使用ServiceStack中的证书对客户端进行身份验证?

我正在探索使用ServiceStack作为WCF的替代方案.我的一个要求是服务器和客户端必须使用证书进行相互身份验证.客户端是一项服务,因此我无法使用涉及用户输入的任何类型的身份验证.此外,客户端需要能够使用单声道在Linux上运行,因此Windows身份验证已经完成.

我使用netsh.exe将服务器证书绑定到服务器端口,验证客户端是否获取服务器证书并使用wireshark加密数据.但是我不能为我的生活弄清楚如何配置服务器以要求客户端证书.

有些人建议使用请求过滤器来验证客户端证书,但这似乎非常低效,因为每个请求都会检查客户端证书.性能是非常重要的.创建自定义IAuthProvider似乎很有希望,但所有文档和示例都面向涉及用户交互的身份验证类型,而不是证书.

https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization

是否可以使用证书通过自托管ServiceStack服务相互验证客户端和服务器?

这是我的测试服务供参考.

public class Host : AppHostHttpListenerBase
{
    public Host()
        : base("Self-hosted thing", typeof(PutValueService).Assembly)
    {
        //TODO - add custom IAuthProvider to validate the client certificate?
        this.RequestFilters.Add(ValidateRequest);

        //add protobuf plugin
        //https://github.com/ServiceStack/ServiceStack/wiki/Protobuf-format
        Plugins.Add(new ProtoBufFormat());

        //register protobuf
        base.ContentTypeFilters.Register(ContentType.ProtoBuf,
                (reqCtx, res, stream) => ProtoBuf.Serializer.NonGeneric.Serialize(stream, res),
                ProtoBuf.Serializer.NonGeneric.Deserialize);
    }

    public override void Configure(Funq.Container container)
    {}

    void ValidateRequest(IHttpRequest request, IHttpResponse response, object dto)
    {
        //TODO - get client certificate?
    }
}

[DataContract]
[Route("/putvalue", "POST")]
//dto
public class PutValueMessage : IReturnVoid
{
    [DataMember(Order=1)]
    public …
Run Code Online (Sandbox Code Playgroud)

c# client-certificates servicestack mutual-authentication

9
推荐指数
1
解决办法
2396
查看次数

X509Certificate2.Verify()始终返回false

面对一个非常奇怪的问题X509Certificate2.Verify()为有效证书返回false.也许有些人之前已经遇到过这种奇怪的情况,并且可以对它有所启发.

我正在使用openssl生成客户端证书以进行测试.我创建了一个根CA并根据该根CA生成客户端证书,并将根CA添加到其链中.

我将根CA和客户端证书加载到本地证书存储区,看起来没问题,但是当我从我的NUnit代码加载它来测试X509Certificate2.Verify()时总是返回false.

在此输入图像描述

以下是从商店加载Cert的代码:

        X509Store store = new X509Store(StoreName.My);
        string thumbprint = "60 d1 38 95 ee 3a 73 1e 7e 0d 70 68 0f 2d d0 69 1e 9a eb 72";
        store.Open(OpenFlags.ReadOnly);
        var mCert = store.Certificates.Find(
                                X509FindType.FindByThumbprint,
                                thumbprint,
                                true
                              ).OfType<System.Security.Cryptography.X509Certificates.X509Certificate>().FirstOrDefault();
        if(mCert != null)
        {
            var testClientCert = new X509Certificate2(mCert);
        }
Run Code Online (Sandbox Code Playgroud)

这是我刚刚生成的客户端证书:(可以从我的本地计算机正确访问CRL URL)

-----BEGIN CERTIFICATE-----
MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQUFADBtMR0wGwYDVQQKExRWaXRh
bEhlYWx0aCBTb2Z0d2FyZTElMCMGA1UECxMcVml0YWxIZWFsdGggU29mdHdhcmUg
Um9vdCBDQTElMCMGA1UEAxMcVml0YWxIZWFsdGggU29mdHdhcmUgUm9vdCBDQTAe
Fw0xNTAyMjcwODQ2MzNaFw0xNjAyMjcwODQ2MzNaMEUxHTAbBgNVBAoTFFZpdGFs
SGVhbHRoIFNvZnR3YXJlMREwDwYDVQQLEwhQbGF0Zm9ybTERMA8GA1UEAxMIVGVz
dFVzZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOkfyjX0PSnRYrBbCC8u
rw7IiFdAUj6frPKEmt0TLAR/4g+NazKdGjRRqxE9mNwX/2zGhIcucfGDVwPtOtiV
opicQEzGiSQkvAc+473MN5D6j3XtBYblALMeMyEYoh3LnHO4K+6kV6XE4BXV/2lV
mAVgXGkZzaayd40DLvg48vPlAgMBAAGjgcUwgcIwCQYDVR0TBAIwADARBglghkgB
hvhCAQEEBAMCB4AwCwYDVR0PBAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMDEG
CWCGSAGG+EIBDQQkFiJPcGVuU1NMIENlcnRpZmljYXRlIGZvciBTU0wgQ2xpZW50
ME0GA1UdHwRGMEQwQqBAoD6GPGh0dHA6Ly9wbGF0Zm9ybWRhc2hib2FyZC5ubC52
aXRhbGhlYWx0aC5sb2NhbC9wb3J0YWwvY3JsLmNybDANBgkqhkiG9w0BAQUFAAOB
gQBXYSmZaVu6vnyl94SO4qpNOutsUm4p7fQHehljhZ+aRrXE10rivWCt4g0k961E
PDsp4J0DR6uth6et42pBp8v2gFIGSQY/F7NhmOAsOJvM7z0oIBxMLcclIDTygbRp
KjZZpNjvf+YJasbidosiL4VSeRiCZ+HPzvKDb3wNeafoZA==
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

这是我从浏览器访问时下载的CRL文件:

-----BEGIN X509 CRL-----
MIIBMjCBnDANBgkqhkiG9w0BAQUFADBtMR0wGwYDVQQKExRWaXRhbEhlYWx0aCBT
b2Z0d2FyZTElMCMGA1UECxMcVml0YWxIZWFsdGggU29mdHdhcmUgUm9vdCBDQTEl
MCMGA1UEAxMcVml0YWxIZWFsdGggU29mdHdhcmUgUm9vdCBDQRcNMTQwODA3MTQz …
Run Code Online (Sandbox Code Playgroud)

c# client-certificates x509certificate2

9
推荐指数
1
解决办法
9222
查看次数

Kafka如何为客户端身份验证指定密钥别名?

我已经看到很多地方使用相同的示例代码显示启用Kafka客户端身份验证:

https://www.cloudera.com/documentation/kafka/latest/topics/kafka_security.html#deploying_ssl_for_kafka__d18295e284

即:

ssl.keystore.location=/var/private/ssl/kafka.client.keystore.jks
ssl.keystore.password=test1234
ssl.key.password=test1234
Run Code Online (Sandbox Code Playgroud)

我的问题是,客户端如何指定要使用的密钥库中的特定密钥?在其他地方我看到JKS密钥库讨论过,密钥是使用别名指定的.我唯一能想到的是:

  • 别名预计是硬编码的(但我找不到这个事实的参考)
  • 预计密钥库中只有一个密钥,因此它使用它找到的第一个密钥
  • 它扫描并使用密码与ssl.key.password属性值匹配的第一个

ssl keystore client-certificates apache-kafka

9
推荐指数
1
解决办法
508
查看次数

在春天的resttemplate发出的每个请求发送客户端证书的正确方法是什么?

我想用我的spring应用程序使用REST服务.要访问该服务,我有一个客户端证书(自签名和.jks格式)进行授权.对其他服务进行身份验证的正确方法是什么?

这是我的要求:

public List<Info> getInfo() throws RestClientException, URISyntaxException {

    HttpEntity<?> httpEntity = new HttpEntity<>(null, new HttpHeaders());

    ResponseEntity<Info[]> resp = restOperations.exchange(
            new URI(BASE_URL + "/Info"), HttpMethod.GET, 
            httpEntity, Info[].class);
    return Arrays.asList(resp.getBody());
}
Run Code Online (Sandbox Code Playgroud)

java spring client-certificates x509certificate resttemplate

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