はじめに
ローカルの開発環境でHTTPSアクセスをするときに証明書の警告が出て精神衛生上よろしくありません。
Keychain Access.app
を使って証明書を作成することで、警告を出ないようにすることができます。
ルート証明書の作成
Keychain Access.app
を起動します。
Keychain Access > Certificate Assistant > Create a Certificate...を選択します。
Certificate Assistantダイアログが表示されるので、以下のように入力・選択し、Createを押します。
Name 1 | Identity Type | Certificate |
---|---|---|
localhost | Self Signed Root | SSL Server |
自己署名についての警告が出ますが、この証明書はローカルでのみ使用するためこのままContinueを押して続けます。
作成が成功した旨のメッセージが表示されますので、Doneを押して閉じます。
作成したルート証明書を信用設定
「localhost」で検索して、今作成したルート証明書を表示します。
下の「!」ボタンを押すか、ダブルクリックするとダイアログが表示されます。
Secure Sockets Layer (SSL)を「Always Trust」に変更します。
ダイアログを閉じる際にパスワードの入力を求められます。ここには自分のmacOSのアカウントのパスワードを入力します。
Kindがprivate keyの秘密鍵を右クリックしてExport "localhost"...からエクスポートします。
秘密鍵へのパスワード設定のダイアログが表示されます。ここはパスワードを空のままOKを押します。
確認のダイアログが表示されるので、El Capitanの場合はここで再びOSのアカウントのパスワードを入力します。Sierraでは入力を求められないのでそのままAllowを押します。
Keychain Access.app
での作業は以上です。
鍵ファイルをPEM形式に変換
保存した秘密鍵をopenssl
コマンドでPEM形式に変換します。
ここではKeychain Access.app
からlocalhost.p12
という名前で保存したこととします。
$ openssl pkcs12 -in localhost.p12 -out localhost.pem -nodes
パスワードの入力を求められますが、空のままEnterでよいです。
Enter Import Password:
MAC verified OK
証明書の保存用ディレクトリを作成します。
$ mkdir ~/.localhost-ssl
localhost.pem
をlocalhost.crt
とlocalhost.key
に分離します。
BEGIN CERTIFICATE
とEND CERTIFICATE
で囲まれた部分を~/.localhost-ssl/localhost.crt
に保存します。
-----BEGIN CERTIFICATE-----
...
...
...
-----END CERTIFICATE-----
BEGIN RSA PRIVATE KEY
とEND RSA PRIVATE KEY
で囲まれた部分を~/.localhost-ssl/localhost.key
に保存します。
-----BEGIN RSA PRIVATE KEY-----
...
...
...
-----END RSA PRIVATE KEY-----
秘密鍵の方はパーミッションを変更しておきます。
$ chmod 600 ~/.localhost-ssl/localhost.key
おわりに
作成した鍵をNginxなどから参照するようにすることで、アクセス時に警告が出なくなります。
ただし、このままだとFirefoxからは警告が出るままなので要調査です。
参考
-
この「Name」はアクセスしたいドメイン名に適宜置き換えてください。 ↩