CentOSにSSL証明書を2つインストールしてみました。

CentOSにSSL証明書を2つインストールしてみました。(2つのドメインにSSL証明書を当てる。)

2つ以上SSL証明書をインストールする場合、グローバルIPアドレスを追加し、IPレベルでバーチャルドメインを立てる必要がありました。

以下はその手順。

Apacheにその設定をほどこすことと、ApacheのSSL用モジュールmod_sslと、OpenSSLをCentOS5にインストールします。

[root@localhost ~]# yum -y install mod_ssl
[root@localhost ~]# yum -y install openssl

秘密鍵や証明書を保管するディレクトリを作ります。

[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]# mkdir ./ssl.key
[root@localhost conf]# mkdir ./ssl.csr
[root@localhost conf]# mkdir ./ssl.crt
[root@localhost conf]# mkdir ./certs
[root@localhost conf]# ls  //ディレクトリを確認
  httpd.conf  httpd.conf.backup.2009-Oct12-15:04:00  magic  ssl.crt  ssl.csr  ssl.key
[root@localhost conf]# cd ssl.key/
[root@localhost ssl.key]# pwd  //現在のディレクトリの場所を表示
  /etc/httpd/conf/ssl.key
[root@localhost ssl.key]# openssl genrsa -des3 -out server.key 2048  //Key生成
  Generating RSA private key, 2048 bit long modulus
  ........++++++
  ....................++++++
  e is 65537 (0x10001)
  Enter pass phrase for server.key:              //パスワードを入力
  Verifying - Enter pass phrase for server.key:  //パスワード確認
[root@admin ssl.key]# chmod 400 server.key  //パーミッション変更
[root@admin ssl.key]# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
  You are about to be asked to enter information that will be incorporated
  into your certificate request.
  What you are about to enter is what is called a Distinguished Name or a DN.
  There are quite a few fields but you can leave some blank
  For some fields there will be a default value,
  If you enter '.', the field will be left blank.
  -----
  Country Name (2 letter code) [GB]:JP                                     //国コードを入力
  State or Province Name (full name) [Berkshire]:Tokyo                     //都道府県名を入力
  Locality Name (eg, city) [Newbury]:Hachiouji                             //市区町村名を入力
  Organization Name (eg, company) [My Company Ltd]:server-memo Corp        //企業名・組織名を入力
  Organizational Unit Name (eg, section) []:                               //部署名を入力(省略の場合ハイフォンを入力)
  Common Name (eg, your name or your server's hostname) []:www.exsample.com //サーバのホスト名をFQDNで入力
  Email Address []:                                                        //担当者のE-mailアドレス(省略の場合ハイフォンを入力)
  ※上記の内容はメモ帳などにコピペ保存(後で必要になってくる場合がある)
  Please enter the following 'extra' attributes
  to be sent with your certificate request
  A challenge password []:         //パスワードを入力(省略可
  An optional company name []:     //省略
[root@localhost ssl.key]# vi server.csr
  で開いた内容をコピペして認証局に送る。
[root@localhost ssl.key]# chmod 400 server.csr  //パーミッション変更
[root@localhostssl.key]# mv server.csr /etc/httpd/conf/ssl.csr //ssl.csrディレクトリにファイルを移動
[root@localhost ssl.key]# openssl rsa -in server.key -out server.key    //サーバー用秘密鍵からパスワード削除
 Enter pass phrase for server.key:    //サーバー用秘密鍵・証明書作成時のパスワード応答※表示はされない
 writing RSA key

SSL証明書の発行はRapidsslにしました。(Rapidsslのキーワードでググると、代理店がいっぱい出てきます。)年額3000円前後で携帯電話の最新機種にも対応しているので、結構良さそうです。wildカード(年額2万円くらい)だと、サブドメインも全てSSL対応にできるようですが、サブドメインを設定するくらいなら新規ドメインを取得したほうが良いように思います。

さくらインターネットなら、IPの追加が月額210円(申請手数料6,300円)で出来ますので、
バーチャルドメインにIPを割り当てれば、新規ドメインにSSL証明書を更に取得して設定できます。

[root@localhost ~] # ifconfig eth0:0 inet IPアドレス netmask 255.255.255.255

[root@localhost ~] # vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
         DEVICE=eth0:0
         BOOTPROTO=none
         ONBOOT=yes
         IPADDR=IPアドレス
         NETMASK=255.255.255.255

上記の設定でルーターに新規割り振られたIPをシステムに組み込みます。

Rapidsslについて

Rapidsslは価格が安いのが大きなメリットですが、企業の実在性を証明するものではありません。機械的に証明書を発行するだけです。共用SSLよりまし、というところでしょうか。もう少しお金に余裕ができたら別のSSL証明書に乗り換えしたほうが良いと思います。

中間証明書インストール

中間CA証明書の(—–BEGIN CERTIFICATE—–) から (—–END CERTIFICATE—–) までをコピーし、inca.pemでインストールします。

[root@localhost ~] # cd /etc/httpd/conf/certs[root@localhost certs]# vi inca.cer
[root@localhost certs]# chmod 400 inca.cer   //作ったファイルのパーミッションを変更

SSLサーバ証明書インストール

Rapidsslからメールで届いたSSL証明書(—–BEGIN CERTIFICATE—–から—–END CERTIFICATE—–まで)をサーバーにインストールします。

[root@localhost ~] # cd /etc/httpd/conf/ssl.crt[root@localhost ssl.crt]# vi server.crt
[root@localhost ssl.crt]# chmod 400 server.crt   //作ったファイルのパーミッションを変更

Apacheに秘密鍵とCRTを組み込む

サーバーにIPが合計2つ割り振りされましたので、ssl証明書も2つのドメインに割り振りできるようになりました。

以下にアパッチの設定を記します。

[root@localhost ~] # vi /etc/httpd/conf.d/ssl.conf
<VirtualHost 111.222.333.444:443>
  ServerAdmin info@example.com
  DocumentRoot "/var/www/html"
  ServerName www.example.com:443
  <Directory "/var/www/html">
  Options FollowSymLinks Includes ExecCGI
  AllowOverride None
  Order allow,deny
  Allow from all
  </Directory>
  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateChainFile /etc/httpd/conf/certs/inca.pem
  SSLCertificateFile /etc/httpd/conf/ssl.crt/server0.crt
  SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server0.key
  <Files ~ ".(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
  </Files>
  <Directory "/usr/local/apache2/cgi-bin">
  SSLOptions +StdEnvVars
  </Directory>
  SetEnvIf User-Agent ".*MSIE.*" 
  nokeepalive ssl-unclean-shutdown 
  downgrade-1.0 force-response-1.0
  CustomLog logs/ssl_request_log 
  "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
</VirtualHost>
<VirtualHost 222.333.444.555:443>
以下2つ目のドメインルートで上と同様の内容を入力します。

そしてApacheの再起動

111.222.333.444と222.333.444.555の部分はIPアドレスです。1個目のserver.key、server.crtはそれぞれ、server0.key、server0.crtにリネーム、2個目はserver1.key、server1.crtにリネームしました。もともとssl.confに書かれているのをコピペして.cgiとか動かす設定にするだけなので簡単でした。

管理上面倒なので、セキュリティー上好ましくないですが、server.keyのパスフレーズを削除します。

[root@localhost ~] # cp server.key server.key.bak
[root@localhost ~] # openssl rsa -in server.key.bak -out server.key
Enter pass phrase for server.key.bak:パスフレーズを入力
writing RSA key

アパッチを再起動して設定を有効化

[root@localhost ~] # service httpd restart

単一IPアドレス上で複数のSSLサイトを運用する設定

SNI(Server Name Indication)というApacheの拡張機能を使うと単一IPアドレス上で複数のSSL証明書を各ブラウザに認識させることができるみたいです。

条件

  • Apacheのバージョンは2.2.12以降
  • OpenSSLのバージョンは0.9.8f以降

設定例

[root@localhost ~] # vi /etc/httpd/conf.d/ssl.conf
Listen 443
NameVirtualHost *:443
SSLStrictSNIVHostCheck off //SNIに対応していないブラウザで403エラーがでない設定

  <VirtualHost *:443>
    SSLEngine On
    ServerName www.example.com:443
    DocumentRoot /var/www/www.example.com
  SSLCertificateFile /etc/httpd/conf/ssl.crt/server1.crt
  SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server1.key
  </VirtualHost>
 <VirtualHost *:443>
    SSLEngine On
    ServerName mail.example.com:443
    DocumentRoot /var/www/mail.example.com
  SSLCertificateFile /etc/httpd/conf/ssl.crt/server0.crt
  SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server0.key
  </VirtualHost>
...

OSがWindows7だと大抵のブラウザはSNIに対応するみたいです。Windows XPではだめな場合があります。なので不特定多数のユーザーが利用するWebサイトでは、このSNIはまだ使えないという所感です。

参照サイト

参照先の百式管理人様、参考させていただきました。ありがとうございます。

Rapidsslの携帯電話対応機種

DoCoMo

  • 非対応機種
    • FOMA
      2001/2002/2101V/2051/2102V/2701/900i/880iシリーズ
  • 上記以外のFOMAには対応

ソフトバンク

ほぼ対応

au

  • 非対応機種
    • HDMLブラウザ搭載EzWeb端末
  • 対応機種
    • WAP2.0ブラウザ搭載EzWeb端末

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です