Giới thiệu tool giúp Trust SSL trên Android, iOS App nhanh chóng
Trust SSL hay Xác thực SSL trên Android , iOS là việc rất cần thiết, Với iOS nó là điều bắt buộc Trên Android thì từ Android 7 trở nên đã có cơ chế thiết lập xác thực bằng file xml Tại sao phải xác thực... Google nhé. Với Android nếu app chỉ cần có lỗi về ssl thì lập tức app sẽ bị suspend đến khi ...
Trust SSL hay Xác thực SSL trên Android , iOS là việc rất cần thiết, Với iOS nó là điều bắt buộc Trên Android thì từ Android 7 trở nên đã có cơ chế thiết lập xác thực bằng file xml
Tại sao phải xác thực... Google nhé. Với Android nếu app chỉ cần có lỗi về ssl thì lập tức app sẽ bị suspend đến khi nào bạn giải quyết được nó.
Sau đây mình bày mấy bạn các xác thực SSL nhanh đơn giản.
Mình có code 1 cái tools tại
https://network-security.haipq.com/
Bạn sẽ không cần kêu KH, DEV server "Gửi tao cái public or private key với" và chỉ cần truy cập vô tools trên
Ví dụ với app viblo chẳng hạn. ta có domain https://viblo.asia
Sử dụng tool ta sẽ lấy được public key, pin code của domain đó để xác thực trong app.
Issued by: COMODO RSA Domain Validation Secure Server CA, COMODO CA Limited, L=Salford, ST=Greater Manchester, GB Expires: Apr 26, 2018 11:59:59 PM Validated: True Pinning code: Digest: SHA-256 8bWQpgEgEIe9YqBw6gf7D7RpVNB26DIuqDHfwPTSW+g= Digest: SHA-256 klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY= Digest: SHA-256 grX4Ta9HpZx6tSHkmCrvpApTQGo67CYDnvprLg5yRME= Download: viblo.asia_public_key.cert
Và tool cung gen luôn những config cho Android, iOS để ta copy và sài luôn Ví dụ với Android : ta có file res/xml/network_security_config.xml đc tạo ra như sau
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config> <domain includeSubdomains="true">viblo.asia</domain> <pin-set expiration="2018-04-26"> <pin digest="SHA-256">8bWQpgEgEIe9YqBw6gf7D7RpVNB26DIuqDHfwPTSW+g=</pin> <pin digest="SHA-256">klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY=</pin> <pin digest="SHA-256">grX4Ta9HpZx6tSHkmCrvpApTQGo67CYDnvprLg5yRME=</pin> </pin-set> </domain-config> </network-security-config>
Config cho okhttp
OkHttpClient okHttpClient = new OkHttpClient.Builder() .certificatePinner(new CertificatePinner.Builder() .add("facebook.com", "sha256/hUIG87ch71EZQYhZBEkq2VKBLjhussUw7nR8wyuY7rY=") .add("facebook.com", "sha256/k2v657xBsOVe1PQRwOsHsw3bsGT2VzIqz5K+59sNQws=") .add("facebook.com", "sha256/WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18=") .build()) .build();
iOS sẽ sử dụng trust kit
let trustKitConfig = [ kTSKSwizzleNetworkDelegates: false, kTSKPinnedDomains: [ "facebook.com": [ kTSKExpirationDate: "2018-01-25", kTSKPublicKeyAlgorithms: [kTSKAlgorithmRsa2048], kTSKPublicKeyHashes: [ "hUIG87ch71EZQYhZBEkq2VKBLjhussUw7nR8wyuY7rY=", "k2v657xBsOVe1PQRwOsHsw3bsGT2VzIqz5K+59sNQws=", "WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18=", ],]]] as [String : Any] TrustKit.initialize(withConfiguration:trustKitConfig)
Ngoài ra bạn có thể tải public key của domain dạng domain.cert