AndroidにSSL自己署名証明書を入れる
SSLのオレオレ証明書をAndroidとPCに入れたい・・・†
- 昔は出来てた気がする。というかWin10だと普通に出来る
- だけど、知らぬ間にAndroidで、オレオレ証明書がエラーになるようになった。信頼できない証明書になる。(入れてないのと同じ)
- いろいろググったら、Android7から出来なくなってるらしい。
- (理由は不明)
- mkcertというツールで証明書を作成するとなぜかうまくいった。
やり方:
- Ubuntu22.04
# apt install mkcert $ mkcert -CAROOT
- ここに表示されたディレクトリにある rootCA.pem を USB経由でAndoridに転送する。
- 設定->セキュリティ->のしたのわかりにくいところにある、証明書をファイルからインストールを実行
- ファイルを選択
- 証明書インストール
- 次、
$ mkcert -key-file server.key -cert-file server.crt <サイト名URL>
- で出来たserver.key と server.crt を /etc/ssl/private に入れ、 server.crtを /etc/ssl/certs/ に入れて
- ApacheのSSL設定に読み込ませる。
- こんな感じ。
- Windows10の場合は rootCA.pem を rootCA.pem.crt にリネームしてダブルクリック、
- 証明書のインストール->現在のユーザー->証明書を次のストアに配置、信頼されたルート証明機関
- でインストールできる。
要点としては、
- rootCA.pem (ルート証明書)は mkcert を入れると、一度だけ作られる。
- クライアント側端末には、それを証明書ストアに配置する。
- WEBサーバーは、rootCA.pemを直接入れるわけではなく、rootCA.pemで署名してもらった server.key と server.crt をApacheのSSL証明書として使用する。
- 違うURLや違うIPアドレスの証明書も、同じように
$ mkcert -key-file server.key -cert-file server.crt <サイト名URL>
- で作成して、それぞれのWEBサーバーに設置すればよい。
- 端末側に仕込む rootCA.pem は共通になる。(1回だけでよい)