react-native 配置ssl

72 阅读2分钟

使用 npm包react-native-ssl-public-key-pinning,使用前需要获得调用接口证书对应的hash,步骤如下:

  1. openssl s_client -connect xxx.xxxx.com:443 -showcerts 看命令返回多少对这种-----BEGIN CERTIFICATE----- xxxx-----END CERTIFICATE----
-----BEGIN CERTIFICATE-----
MIIGhDCCBWygAwIBAgIMAmkAM9VbH62cV7YDMA0GCSqGSIb3DQEBCwUAMFAxCzAJ
BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSYwJAYDVQQDEx1H
bG9iYWxTaWduIFJTQSBPViBTU0wgQ0EgMjAxODAeFw0yNDA0MjQwMzM2MDFaFw0y
NTA1MjYwMzM2MDBaMHwxCzAJBgNVBAYTAkhLMRAwDgYDVQQIEwdLb3dsb29uMRIw
EAYDVQQHEwlLd3VuIFRvbmcxKTAnBgNVBAoTIEZUTGlmZSBJbnN1cmFuY2UgQ29t
cGFueSBMaW1pdGVkMRwwGgYDVQQDDBMqLnVhdGN0ZmxpZmUuY29tLmhrMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyMmEE61JyuA71PXqPvRq+hIo6a83
/s1TMRSw0a5+JvXGvckhVzmo++b3zIGoR7M/BexnfiCsU6Jmq4gckzFNfYq8ZOPo
ZHKB/bKeIGO4DXtBDuwl8MV1Lnydj5XR1I8Bp/bRA/eVekQ5gzTWnaVXCnoyCZCR
xicV6DFhcT4SYsHbwYqoa0vHQg5iMX3WS5nib1kHVgDdT8qovDKiQjmTbEhZUlz3
XGLVrlerAkSMa9sr3V8af7nwDb06su5gr+a6zMKLeB2e50B3fCuPYgcWaLh9h6Ad
+XvQjGgLm+AXZzsGS1xfHEs/BDUSqVvnQc+dIrRSRgGJsuSjYctPrzCdHwIDAQAB
o4IDMDCCAywwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwgY4GCCsGAQUF
BwEBBIGBMH8wRAYIKwYBBQUHMAKGOGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5j
b20vY2FjZXJ0L2dzcnNhb3Zzc2xjYTIwMTguY3J0MDcGCCsGAQUFBzABhitodHRw
Oi8vb2NzcC5nbG9iYWxzaWduLmNvbS9nc3JzYW92c3NsY2EyMDE4MFYGA1UdIARP
ME0wQQYJKwYBBAGgMgEUMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2Jh
bHNpZ24uY29tL3JlcG9zaXRvcnkvMAgGBmeBDAECAjBCBgNVHREEOzA5ghMqLnVh
dGN0ZmxpZmUuY29tLmhrgg8qLmZ0bHVhdC5jb20uaGuCEXVhdGN0ZmxpZmUuY29t
LmhrMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAfBgNVHSMEGDAWgBT4
73/yzXhnqN5vjySNiPGHAwKz6zAdBgNVHQ4EFgQUNO8EVM3ui777bUG7PPSPb1WR
bLowggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoBaAB2AObSMWNAd4zBEEEG13G5zsHS
QPaWhIb7uocyHf0eN45QAAABjw4svAcAAAQDAEcwRQIgdlRrq0quiPSjD7mCYCBN
Bbbm/tlL5GsZ9T+2VUXCOCUCIQCn5ZbgdKkwr/hH5KZmsmjeWw4KC2E184QL9xKm
Ds5hwQB2AE51oydcmhDDOFts1N8/Uusd8OCOG41pwLH6ZLFimjnfAAABjw4svQwA
AAQDAEcwRQIgRl8P/7oY3Rx0rfLn5CNWL/UVORN1Klp8EDWGdF0wkJECIQCIm8Ba
FMPfcngoXmMQ9cUXfKrBJNqLVnwylW6iRPBILwB2AOCSs/wMHcjnaDYf3mG5lk0K
UngZinLWcsSwTaVtb1QEAAABjw4svSIAAAQDAEcwRQIhAMDwRNZRt5h0ngzGFQIc
RV/v/m1yerWOpb6hodaCt7AIAiBcJQ2Y38DrZDtQYD89BNZxhoaMEWzjS5q9tp65
/DbwajANBgkqhkiG9w0BAQsFAAOCAQEAUwOZCqTjxGbqNScz/spaOMOBaMeLEuhS
tqJLY+nlvwkyDCWVQOsHs+qm5mbPlvFFRz4lXdLqqyfAWXuRRIGIVYbS/0N4lRgG
rA312TCIKfTHWDAq2SV8URHqmjGYnenDFzLGrA5UVCqZh8mEt436iR/e1keGpwMx
NpaEz15k5WvQfxlyR4WYonuvwXljnD1hnMYh/8EjLVCoHTDAsF6oiwnjmVvd4GLv
wfzVDDayOgBVXxoRwUAidau3TH31A3qevdyxgejaUeWqDziWCwK08JSjobmlpPr0
Hbsv0Fi2PK6H2rKtnEgO4nb7nOvrBfsVhTL6ACPdl+iZmYezvT25jQ==
-----END CERTIFICATE----
  1. 然后把-----BEGIN CERTIFICATE----- xxxx-----END CERTIFICATE----这一对的内容保存为xxx.pem
  2. 执行 openssl x509 -in xxx.pem -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

image.png 这个hETpgVvaLC0bvcGG3t0cuqiHvr4XyP2MTwCiqhgRWwU=就是要的hashes, 然后就可以配到react-native-ssl-public-key-pinning中了