IPアドレス指定の自己サーバー証明書で、iPad/iPhoneから httpsでアクセスする

2018年11月8日木曜日

https iOS OpenSSL SSL オレオレ証明書 自己署名証明書

t f B! P L

IPアドレス指定の自己サーバー証明書で、iPad/iPhoneから httpsでアクセスする

enter image description here

やりたい事

iPad/iPhoneから、IPアドレス指定で、社内のWEBサーバとhttps通信します。

通常は、サーバ証明書を、ドメイン名で発行して https化します。
しかし、iPad/iPhoneから、ローカルサーバにドメイン名(ホスト名)でアクセスするには、名前解決の為のDNSサーバが必要になります。

ドエミン名(ホスト名),での接続イメージ
[ドメイン名(ホスト名)で iPad/iPhoneからアクセスする場合]

開発用途の為に、DNSサーバを用意するのは面倒なので、今回はOpenSSLを使って、IPアドレスに対してサーバ証明書を発行していきたいと思います。
そうすれば、https://192.168.xxx.xxxなどのIPアドレス指定で、https通信が可能となり、結果DNSサーバが不要になります。

IPアドレスでの接続イメージ
[IPアドレスで iPad/iPhoneからアクセスする場合]

環境

今回構築する環境は以下の通りです。

  • Webサーバ

・Windows Server 2012
・IIS

  • クライアント

・iPad, IPhone ( IOS 12 )

CA証明書(ルート証明書)の作成

まずは、自己CA証明書を作成していきます。

CA証明書の秘密鍵を作成

openssl genrsa 2048 > ca.key

CA証明書要求を作成

コマンド入力後、いくつかの質問をされるので、適切に答えます。

openssl req -new -key ca.key -out ca-certificate-request.csr

[質問の内容と回答の例]

Country Name (2 letter code) []:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) []:Minato-ku
Organization Name (eg, company) []:my-company
Organizational Unit Name (eg, section) []:my-section
Common Name (eg, fully qualified host name) []:Local System CA
Email Address []:sample@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:password

CA証明書要求に自己署名し、CA証明書を作成

CA証明書の期限切れが発生しないよう、有効期限-daysに大きめの日数を入力しています。

openssl req -x509 -key ca.key -in ca-certificate-request.csr -out ca-certificate.crt -days 3650

CA証明書をインストール (信頼済みの証明書として登録)

作成した自己CA証明書を、Windows Server / iPad・IPhone に登録します。

  • Windows Server
  1. ca-certificate.をダブルクリックします。

CA証明書をダブルクリック

  1. [インストール]をクリック

証明書のインストール

  1. 証明書ストアに[信頼されたルート証明機関]を選択

証明書ストアの選択

  • iPad / iPhone

iPadでの画面イメージで説明します。(iPhoneでも同じ手順です)

  1. CA証明書ca-certificate.crtをメール等で、 iPadに送りつけます。(DropBox等でも可)

CA証明書をタップ

  1. ファイルをクリックして、CA証明書をインストールします。

インストールボタンをタップ

警告画面で再度インストールボタンをタップ

  1. 設定 -> [一般] -> [証明書信頼設定]を選択します。

証明書信頼メニューをタップ

  1. インストールしたCA証明書の信頼設定をONにします。

CA証明書を信頼設定をONにする

サーバ証明書の作成

IISでサーバー証明書要求を作成

インターネット インフォメーション(IIS)マネージャーを開いて、サーバ証明書のアイコンを選択します。

ホーム画面からサーバ証明書アイコンをクリック

「証明書の要求の作成」のリンクをクリック

証明書要求の作成リンクをクリック

識別名プロパティに、必要事項を入力します。
一般名には、Webサーバのホスト名を入力して下さい。

識別名プロパティを入力

暗号化プロバイダを選択して[次へ]

暗号化サービスプロバイダーの選択

サーバ証明書要求の保存先を選択して、[保存]をクリック
※ 保存先は、CA証明書を作ったフォルダと同じ所を指定して下さい

証明書要求の保存先選択

extfileの作成

v3.extというファイル名で、以下の内容のファイルを作成します。
ファイルの保存先は、CA証明書を作ったフォルダと同じ所です。

[v3.ext]

[SAN]
subjectAltName=@alt_names
basicConstraints=CA:FALSE
[alt_names]
DNS.1=My-Server
IP.1=192.168.111.111 
IP.2=127.0.0.1

DNS.1を、Webサーバのホスト名に書き換える
IP.1を、WebサーバのIPアドレスに書き換える

サーバ証明書の作成

以下のコマンドで、サーバー証明書要求を、CA秘密鍵で署名して、サーバ証明書を作成します。
ここでも、証明書の期限切れが発生しないよう、有効期限-daysに大きめの日数を入力しています。

openssl x509 -req -CA ca-certificate.crt -CAkey ca.key -CAcreateserial -CAserial ca-serial.srl -in server-certificate-request.txt -out server-certificate.crt -days 3650 -extfile v3.ext -extensions SAN

IISで証明書要求の完了を行う

再度、インターネット インフォメーション(IIS)マネージャーを開いて、「証明書の要求の完了」クリック。

証明書作成要求の完了をクリック

作成したサーバ証明書を選択して、[完了]をクリック。

サーバ証明書の選択

登録が成功すると、証明書の一覧に表示されます。

証明書一覧に登録したサーバ証明書が表示される

バインドの編集 (https化)

https化するWebサイトの上で、右クリック -> [バインド]を選択します

右リックバインドの編集

[追加]ボタンをクリックします。

追加ボタンクリック

[種類]にhttpsを選択し、[SSL証明書]に登録したサーバ証明書を選択します

[種類]にhttpsを選択[SSL証明書]に登録したサーバ証明書を選択

動作確認

設定が終わったら、https化されているか確認しましょう。

ブラウザを開いて、アドレスに https://<WEBサーバのIPアドレス>を入力します。
開いたページのアドレスバーを見て、下のイメージのようになっていればOKです。

最後に

正直手順が多くて、少し大変でした。
でも、一度環境を作ってしまえば、証明書の期限を気にせず、ずっと使えるので、かなり重宝すると思います。

参考にしたサイト

https://kanasys.com/tech/47

スポンサーリンク

QooQ