開発用WEBサーバーとAndroidでHTTPS通信する方法
解決したいこと
WEBサーバーと通信するAndroidアプリを開発中です。
WEBサーバーは開発用サーバーです。
HTTPS通信時に記事中のエラーが発生しました。
解決方法を教えてください。
発生している問題・エラー
HttpsURLConnection.connect() コール後に下記の例外が発生しています。
javax.net.ssl.SSLPeerUnverifiedException: Hostname exsample.com not verified:
certificate: sha1/uc+mc16yB4TFeOHlohvkRGQ1ZbY=
DN: O=Default Company Ltd,L=Default City,C=JP
subjectAltNames: []
自分で試したこと
開発用WEBサーバーにて証明書を作成
プライベートCA(認証局) 秘密鍵・証明書作成
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt -reqexts v3_req -extensions v3_ca
クライアント用秘密鍵・証明書署名要求(CSR)作成
クライアント用秘密鍵作成
openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -out client.key
クライアント用証明書要求作成
openssl req -new -key client.key -out client.csr
クライアント用証明書作成
sudo openssl x509 -req -in client.csr -CA certificate.crt -CAkey privateKey.key -CAcreateserial -out client.crt -days 365
/etc/httpd/conf.d/ssl.conf にクライアント用秘密鍵、クライアント用証明書を設定し、ブラウザからアクセスできることを確認しました。
Androidに自己署名証明書を設定
参考URL
https://developer.android.com/privacy-and-security/security-ssl?hl=ja
https://developer.android.com/privacy-and-security/security-config?hl=ja