美文网首页
单向SSL自签名证书-证书创建、iOS端和服务端配置

单向SSL自签名证书-证书创建、iOS端和服务端配置

作者: BeginnerX | 来源:发表于2018-09-20 10:46 被阅读0次

       最近遇到这么一个问题,在开发中使用的是https协议访问接口。后端小哥给了我一张base64编码的自签名证书。我把证书放到工程里面后,发现看不到证书的内容。如下图:

xcode中的证书截图

        明显证书有问题,让后端小哥帮忙解决下。后端小哥说他也不知道怎么弄。询问了下测试妹子以前遇到过这种问题没。妹子让我用MAC签一张自签名证书来试试。

准备证书

准备密钥

genrsa -des3 -out server.key 2048

执行结果:

genrsa -des3 -out server.key 2048 执行结果

命令中包含参数 -des3 ,所以命令在执行过程中会提示输入口令。

生成证书请求文件

openssl req -new -key server.key -out server.csr

执行结果:

openssl req -new -key server.key -out server.csr 执行结果

在命令执行过程中需要输入一些证书申请需要的信息。

生成自签名证书

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

执行结果

命令执行结果

iOS端配置

将证书文件格式由crt转换成cer

openssl x509 -in server.crt -out server.cer -outform der

执行结果

命令执行结果

将server.cer放到工程中,可以看到证书内容,如下图:

证书内容

代码中配置(AFN3.0)

// 1.初始化单例类

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:IFSSLPinningModeCertificate];

securityPolicy.allowInvalidCertificates = YES;  // 客户端是否信任非法证书

securityPolicy.validatesDomainName = NO;    // 客户端是否信任非法证书

// 2.设置证书模式

NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"server" ofType:@"cer"];

NSData * cerData = [NSData dataWithContentsOfFile:cerPath];

NSMutableArray *certContentArray = [NSMutableArray array];

[certContentArray addObject:certData];

[securityPolicy setPinnedCertificates:certContentArray];

manager.securityPolicy = securityPolicy;

服务端配置

后端服务部署在Tomcat上。先将cer 转换成jks格式

openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx

keytool -import -alias mycert -file server.cer -keystore server.jks

在命令执行过程中需要输入jks文件的密钥。

然后配置Tomcat

server.xm配置文件

将图中 keystoreFile和keystorePass修改为生成的文件和设置的密码。

完成!

相关文章

网友评论

      本文标题:单向SSL自签名证书-证书创建、iOS端和服务端配置

      本文链接:https://www.haomeiwen.com/subject/fvrgnftx.html