如何在使用 Azure 服务器的本机应用程序中进行 SSL 固定?

问题描述

如 PEN 测试结果所示,我想在我的 react-native 应用程序中实现 SSL Pinning。我们的 API 服务器在 Azure 中。当我搜索 SSL Pinning 时,我发现我们需要使用 openssl 命令生成证书。但我收到错误

s_client: -connect argument or target parameter malformed or ambiguous
unable to load certificate
4565851584:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
unable to load Public Key
4369083840:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: PUBLIC KEY
47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=

我使用了以下命令:

openssl s_client -servername <AZURE API SERVERNAME> -connect <AZURE API SERVERNAME>:443 | openssl x509 -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

我正在关注此链接

https://itnext.io/react-native-security-ssl-pinning-cde086210d58

我们需要先在 Azure 门户中做些什么。我需要一些帮助。如果有人已经使用 Azure 服务器在 React Native 应用程序中完成 SSL Pinning,请分享一些链接作为参考。

解决方法

请在运行 OpenSSL 命令之前尝试以下 2 个步骤:

  1. ping {AZURE API SERVERNAME}
  2. telnet {AZURE API SERVERNAME} {端口}

如果 {AZURE API SERVERNAME} 不是公共域/IP 地址,请确保将其添加到主机文件(在 Windows 上)或钥匙串(在 MacOS 上)。

如果以上 2 项检查成功,那么您的 OpenSSL 将能够正常返回正确的值。