LoginSignup
48
46

初めてのSSL証明書作成(クラウドSSL(旧CoreSSL))と、Apacheに組み込んでSSLチェックツールで「A」とるまでのながれ

Last updated at Posted at 2015-05-12

SSL証明書

自分の公開ドメインでhttpsを使用する際にオレオレ証明書を使用するのもエンジニアとしてどうかなって思ったので、いい機会なので「SSL証明書取得」=安いところ、そして「組み込み」、「セキュリティ設定」の流れで作業してみました。

ちなみにSSLサーバ証明書とは
 ・SSLサーバ証明書とは

国内格安SSL証明書事情

990円/年~ ってありますが代理店経由なので、ここらは為替レートに依存するみたいでタイミングでしょうかね。安いSSL証明書は、申請ベースなのでなんと言うか公的に証明され…まあ、ここらは個人サイトなのでいいでしょう。ってことで CoreSSLが3年で 990円/年 だったので決めました(英語読めればもっと安いとこありますw)。

SSL BOX
SSL ストア

クラウドSSL(旧CoreSSL)

2023/02/20 に、SSL証明書のブランド名が クラウドSSL(旧CoreSSL)に変更されました。安いことは変わりありませんが、昨今の円安と手数料がありお値段値上がりしてますね。

導入手順

話がなげーんだよ。って。感じですよね。
手順があったのでそれを参考にしながら、進めます。

秘密鍵の作成

openssl をインストールしときます。パスフレーズの入力が面倒なので秘密鍵の暗号化なし、2048 ビット以上の鍵長として作成します。server.key は、大切なのでちゃんと管理しておきます(パスフレーズ付けた場合は、それもわすれずに)

# openssl md5 /bin/* > rand.dat
# openssl genrsa -rand rand.dat -out server.key 2048

秘密鍵から署名要求 (Certificate Signing Request) の作成

正確に入力すること。特にコモンネームは、https でアクセスする FQDN を正しく入力します(マルチの場合は、*.ドメイン)。間違って申請するとアウトなのできをつけましょう~(この段階なら何度でも作成可能ですので)。
Email Address, A challenge password, An optional company name は、入力しません。

[SHA-1証明書を使い続けるリスク] (https://jp.globalsign.com/sha256/background/)があるので、SHA-2 で作成します。オプション(-sha256 つけること)

# openssl req -new -sha256 -key server.key -out server.csr
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:都道府県名
Locality Name (eg, city) [Default City]:市区町村名
Organization Name (eg, company) [Default Company Ltd]:組織名
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:コモンネーム
Email Address []:

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

ちなみに CoreSSL の画面では、SHA-1 から SHA-2 に作り直してくれるのオプションがあるので万が一間違って SHA-1で作成したCSR でも平気ですが、今後のこともあるので間違わない方がいいね(言ってる自分がそれやらかした)。

証明書発行までの流れ

SSL BOX で証明書発行までの流れは以下のとおり。条件さえ整っていれば5分で証明書を発行してくれます。

プリペイドを買う(銀行振込み、カード、PayPal)⇒ 新規作成 ⇒ 新規取得 ⇒ 登録 ⇒ 完了

openssl_001.png

openssl_002.png

承認者メールアドレスで・・・

当然と言えば当然ですが、SSL証明書を発行するとき自ドメインに承認者メールアドレスがないと先にすすみません。なので一時的にしろメールを受け取れるように整備しておく必要があります。

SSL証明書を申請する際に指定できる承認者メールアドレスはどのようなアドレスですか。

Postfix で受信できる環境をさくっと作っとく

受信だけでいいので、sasl とか設定いらないのでさくっと。

Postfix+Dovecot(シングルドメイン)の設定

adminユーザつくっときましたw

承認者メールアドレスに認証コードがあるのでぽちっとな

流れに進んでいくと、承認者メールアドレスに承認メールが届くので指定されたURLを叩いて認証コードを入れるだけ。これで全て手続き完了です。

CoreSSLの管理画面開いてステータスを確認しときます。

SSL証明書と中間証明書を設定する

Apache に秘密鍵、SSL証明書、中間証明書を設定します。
場所は、/etc/httpd/conf/ssl/crt に作ってみたけど、ここらへんは任意ってことでw

openssl_004.png

# mkdir -p /etc/httpd/conf/ssl/crt
# cd /etc/httpd/conf/ssl/crt
# cp server.key  my.domain.key
# vi my.domain.crt  ← CERT(SSL証明書)の内容を貼り付ける
# vi my.domain.inter.crt ← 中間証明書の内容を貼り付ける

Apacheのssl.conf に書いて、Apacheを再起動しブラウザで確認します。

  SSLEngine on
  SSLCertificateKeyFile /etc/httpd/conf/ssl/crt/my.domain.key
  SSLCertificateFile    /etc/httpd/conf/ssl/crt/my.domain.crt
  SSLCACertificateFile  /etc/httpd/conf/ssl/crt/my.domain.inter.crt

コマンドからも確認できます

$  curl -kvI https://どめいん

さてSSLチェックツールで評価チェックしてみる

Qualys SSL LABSの「SSL Server Test」 で評価をとしてみましたが。初期の状態だと「C」判定くらいましたw。評価をみると CVE-2014-3566 脆弱性あるとか、TLS が・・・と怒られているのでここは、ちゃんとセキュリティを設定して「A」評価にします。

  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLHonorCipherOrder ON
  SSLCipherSuite EECDH+HIGH:EDH+HIGH:HIGH:MEDIUM:+3DES:!ADH:!RC4:!MD5:!aNULL:!eNULL:!SSLv2:!LOW:!EXP:!PSK:!SRP:!DSS:!KRB5

ここが参考になりました
 ・ApacheでOpenSSLのセキュリティを強化する

再判定の結果・・・「A」キター
image.png

中間証明書の確認方法

openssl コマンドで確認できる。

$  openssl s_client -connect localhost:443 -showcerts  < /dev/null

SSL中間CA証明書の確認方法メモ

これで

暫くは安心です、あと更新切れの3年後に証明書の入れ替えが・・・。
とりあえず1度経験してみれば、会社業務で頼まれても簡単にできそうなことが分かっただけいいとしよう。

その他

$3.65/年 とか 無料でSSL証明書を発行してくれるとこもあるみたい。そのうちやってみる。

無料のSSL証明書StartSSLを活用する
年額3.65ドルでSSL証明書を手に入れる

48
46
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
46