Node.js https 以及iOS https請求

話不多說,直入正題。

先說node.js端

證書是我在騰訊云搞得,下載下來即可。上代碼
node用的是express模塊

var app = require('express')();
var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey  = fs.readFileSync('3_sallen.cc.key');
var certificate = fs.readFileSync('2_sallen.cc.crt');
var credentials = {key: privateKey, cert: certificate};

var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
var PORT = 8000;
var SSLPORT = 8001;

httpServer.listen(PORT, function() {
    console.log('HTTP Server is running on: http://localhost:%s', PORT);
});
httpsServer.listen(SSLPORT, function() {
    console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT);
});

app.get('/user', function(req, res) {
    if(req.protocol === 'https') {
        res.status(200).send('Welcome to sallen');
    }
    else {
        res.status(200).send('Welcome!');
    }
});

好了 下面是ios

后臺給的證書crt的話 需要轉(zhuǎn)換成cer

進到證書路徑,執(zhí)行下面語句 openssl x509 -in 你的證書.crt -out 你的證書.cer -outform der 這樣你就可以得到cer類型的證書了
sallen是我轉(zhuǎn)換的證書。

我用的是免費證書 所以在ios訪問時以下錯誤,


error.png

所以需要在afnetworking里面注釋掉下面


zhushi.png

當然了 花錢的證書 應(yīng)該是不需要的。

下面ios代碼附上

   NSString *url = @"your address";
   
   NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"sallen" ofType:@"cer"];
   NSData *certData =[NSData dataWithContentsOfFile:cerPath];
   NSSet *certSet = [[NSSet alloc] initWithObjects:certData, nil];
  
   
   AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
   // 設(shè)置證書
   [securityPolicy setPinnedCertificates:certSet];
   securityPolicy.allowInvalidCertificates = YES;
   securityPolicy.validatesDomainName = YES;
   // 初始化請求的manager對象
   AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
   manager.securityPolicy = securityPolicy;
   manager.responseSerializer = [AFHTTPResponseSerializer serializer];
 
   
   [manager GET:url parameters:nil progress:^(NSProgress * progress){
   } success:^(NSURLSessionDataTask *task, id responseObject) {
       NSArray * array = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
       NSLog(@"OK === %@",array);
   } failure:^(NSURLSessionDataTask *task, NSError *error) {
       NSLog(@"error ==%@",error.description);
   }];
   ```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容