ローカルネットワークからの通信テストなどで、正式なSSLを使う前にとりあえずWebサーバーやメールサーバー等のSSL機能が動作しているか確認したい場合がある。
Ubuntuサーバで”snakeoil”という仮のSSL証明書を使ったテストを行ったので備忘録を残す。
”snakeoil”仮のSSL証明書
Ubuntu 22.04 LTS Serverでは、apache2パッケージをインストールすると、ssl-certパッケージがインストールされて”snakeoil”という仮のSSL証明書が利用できるようになっている。
apache2のインストール
$ sudo apt install apache2
手動でssl-certパッケージを利用する場合
上記の、apache2パッケージをインストールする事で、ssl-certパッケージによる仮のSSL証明書も同時にインストールされるが、何らかの都合で手動でインストールしたい場合は下記コマンドを実行。
$ sudo apt install ssl-cert
$ sudo make-ssl-cert generate-default-snakeoil
ApacheでHTTPSサーバーのテスト
ApacheのSSLモジュールと、デフォルトのSSLのサイトを有効化し、Apacheを再起動する。
$ sudo a2enmod ssl
$ sudo a2ensite default-ssl
$ sudo service apache2 restart
通信ポートの確認
nmap
コマンドで、443ポートが開いているかを確認。
$ nmap localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2022-08-15 09:34 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00020s latency).
Other addresses for localhost (not scanned): ::1
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
サンプルのSSL証明書について
SSLで通信を行うには、SSL証明書をサーバーにインストールしなければなりません。ですがUbuntuの場合、Apache Webサーバーをインストールした段階でサンプルのSSL証明書が自動的に作成され、利用可能になっている。
Ubuntuでは、apache2パッケージのインストール時に下記コマンドが自動的に実行されて、”snakeoil”という仮のSSL証明書を生成する。
make-ssl-cert generate-default-snakeoil
生成されたサンプルの証明書の秘密鍵と公開鍵のファイル所在は下記。
/etc/ssl/private/ssl-cert-snakeoil.key
/etc/ssl/certs/ssl-cert-snakeoil.pem
又、ApacheのデフォルトのSSLサイト設定である /etc/apache2/sites-available/default-ssl.conf
にも、下記のようにこの証明書と秘密鍵が指定されている。
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Webブラウザからのhttps://通信確認
Webブラウザーから https://(サーバーのIPアドレス)にアクセス。
以下のような警告が表示されてるはずです。これはサーバーが(信頼できる認証局の署名のない)自己署名証明書を利用しているため。
[詳細情報…] を押す。 [危険性を承知で続行] を押す。https:// 通信で表示できた。
証明書の情報を確認すると、2028年までの有効期限となっていた。
補足
snakeoil
とは日本で言うガマの油のような、効果のあやしげな胡散臭い商品のことを指す単語だそうです。そこから転じて、自己署名証明書の名前に使われている。当然ですが、そのまま本番サイトに利用できる証明書ではない。
コメント