相关疑难解决方法(0)

无法信任iphone上的自签名证书

我目前正在尝试使用自签名证书连接到服务器.我正在使用NSURLConnection连接到服务器.如何确保我只信任正确的服务器并取消所有其他连接?我使用以下代码

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {  

    SecTrustResultType results;
    SecTrustRef trust = [[challenge protectionSpace] serverTrust];

    SecTrustEvaluate(trust, &results);

    if (results == kSecTrustResultProceed || results == kSecTrustResultConfirm) {
        [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
    } else {
        [challenge.sender cancelAuthenticationChallenge:challenge];
    }

}
Run Code Online (Sandbox Code Playgroud)

目前SecTrustEvaluate总是返回结果等于kSecTrustResultRecoverableTrustFailure.我已使用iphone配置实用程序在手机上安装了带证书的配置文件,并将其标记为已验证,但未更改结果.

任何人都可以帮我获得任何一个kSecTrustResultProceedkSecTrustResultConfirm自签名证书的信任结果吗?

iphone ssl https cocoa-touch objective-c

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

AFNetworking 2.2使用自签名证书进行SSL固定

我想阻止我的应用程序/服务器通信从MITM攻击,所以我试图设置SSL固定,但我在使用自签名证书使用AFNetworking 2.2时遇到问题.我认为这主要是我如何生成证书的问题.

我首先尝试根据这些说明生成自签名证书:

生成私钥:

sudo openssl genrsa -des3 -out server.key 2048
Run Code Online (Sandbox Code Playgroud)

生成签名请求,并在询问公共名称时使用域名:

sudo openssl req -new -key server.key -out server.csr
Run Code Online (Sandbox Code Playgroud)

生成证书:

sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Run Code Online (Sandbox Code Playgroud)

最后,将其转换为der格式(因为AFNetworking 需要它)

sudo openssl x509 -outform der -in server.crt -out server.der
Run Code Online (Sandbox Code Playgroud)

服务器是Ubuntu 12.04,运行ngninx + passenger来提供Rails 4应用程序.这是我的nginx服务器配置打开SSL的位:

server {
  listen 80;
  listen 443;
  server_name myapp.com;
  passenger_enabled on;
  root /var/www/myapp/current/public;
  rails_env production;
  ssl on;
  ssl_certificate /etc/nginx/ssl/server.crt;
  ssl_certificate_key /etc/nginx/ssl/server.key;
}
Run Code Online (Sandbox Code Playgroud)

重新启动nginx后,下载der文件,将其添加到我的项目,并将其重命名为"server.cer"(因为AFNetworking要求证书使用.cer扩展名),我使用此代码打开我的AFHTTPSessionManager子类的SSL固定: …

ssl openssl nginx ios afnetworking-2

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

在信任评估的同时不断获得kSecTrustResultRecoverableTrustFailure - iphone

我想与我的服务器安全地沟通,这就是我在做什么......

NSURLProtectionSpace *protectionSpace = [challenge protectionSpace];
SecTrustRef trust = [protectionSpace serverTrust];
NSURLCredential *credential = [NSURLCredential credentialForTrust:trust];

    SecPolicyRef myPolicy = SecPolicyCreateBasicX509();

NSArray * certs = [[NSArray alloc] initWithObjects:(id)certificate,nil]; //certificate is my server's cert.
credential = [NSURLCredential credentialForTrust:trust];

    SecTrustSetAnchorCertificates(trust,
                                  (CFArrayRef) [NSArray arrayWithObject:(id) certificate ]);    

OSStatus status = SecTrustCreateWithCertificates(certs, myPolicy, &trust);

SecTrustResultType trustResult = 0;

if (status == noErr) {
    status = SecTrustEvaluate(trust, &trustResult);
}

    NSLog(@"Trust I get: %d", trustResult);
[certs release];

if (trustResult == kSecTrustResultRecoverableTrustFailure) {
    NSLog(@"Recoverable Failure");
    CFAbsoluteTime trustTime,currentTime,timeIncrement,newTime;
    CFDateRef newDate; …
Run Code Online (Sandbox Code Playgroud)

ssl certificate security-framework ios4

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

在iOS上使用SecCertificateCreateWithData创建证书

我想在iOS应用程序中以编程方式创建证书.我能找到的最接近的API是SecCertificateCreateWithData,它需要DER编码的二进制输入.

鉴于我有所有可用的数据作为运行时对象,我如何构造DER编码的二进制数据输入?

security pki ios

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