はじめに
MACローカル環境でサブドメインを設定し、
SSL化した状態でhoge.example.comにAndroidからアクセスするまでについて説明する記事です。個別の記事は散見されたのですが、他にまとまっている記事がなかったので、備忘録を兼ねて書きました。
初心者向けにできる限りコマンドを全て記載しております。
#1. MAMPダウンロード&インストール
https://www.mamp.info/en/downloads/
よりダウンロードとインストール
#2. SSL化
OpenSSLを利用して、
自己署名証明書を発行します。
opensslがインストールされていない場合はインストール
brew install openssl
apacheの設定ディレクトリに移動
cd /Applications/MAMP/conf/apache/
秘密鍵を保存するディレクトリを作成し移動
mkdir ssl && cd $_
秘密鍵を作成
openssl genrsa -out server.key 2048
CSRの作成
openssl req -new -key server.key -out server.csr
対話型になるのでCommon Name (eg, fully qualified host name)にホスト名を入力。今回はexmple.comを利用。
Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (eg, fully qualified host name) []:example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
サーバー証明書の作成
openssl x509 -req -days 365 -signkey server.key -in server.csr -out server.crt
コメントアウトを解除してhttp-ssl.confファイル読み込み
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf
下記3行を追記して証明書、秘密鍵の読み込み
SSLCertificateFile "/Applications/MAMP/conf/apache/ssl/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/ssl/server.key"
httpd-ssl.conf内でDocumentRoot、サーバー証明書、秘密鍵の読み込みを下記のように修正
DocumentRoot "/Applications/MAMP/htdocs"
...
SSLCertificateFile "/Applications/MAMP/conf/apache/ssl/server.crt"
...
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/ssl/server.key"
apacheシンタックスチェック
/Applications/MAMP/Library/bin/apachectl configtest
server.crtをドラッグアンドドロップでキーチェーンアクセスのシステムに追加し、
信頼を常に信頼に変更
dnsmasqインストール
brew install dnsmasq
example.comをループバックアドレスとして解決する。
hostsファイルを読み込む。
echo 'address=/.example.com/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.conf
echo 'addn-hosts=/etc/dnsmasq.hosts' >> $(brew --prefix)/etc/dnsmasq.conf
名前解決をローカルのDnsmasqに任せる
mkdir -p /etc/resolver
vi /etc/resolver/example.com
ローカルを名前解決
nameserver 127.0.0.1
dnsmasqを起動
sudo brew services start dnsmasq
名前解決できることを確認
ping hoge.example.com