SSL概論

ssl.png

オレオレCA(Certificate Authority)の作成

  1. rootになります
    kagyuu@grape:~> su -
    Password:
  2. CA関連のファイルを格納するディレクトリを作成します
    grape:~ # mkdir /usr/local/ssl
  3. CAを作成します
       grape:~ # cd /usr/local/ssl
       grape:/usr/local/ssl # /usr/share/ssl/misc/CA.pl -newca
     CA certificate filename (or enter to create)
       
       Making CA certificate ...
       Generating a 1024 bit RSA private key
       .................++++++
       ........++++++
       writing new private key to './demoCA/private/./cakey.pem'
     Enter PEM pass phrase:****************
       Verifying - Enter PEM pass phrase:****************
       -----
       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) [AU]:JA
     State or Province Name (full name) [Some-State]:Tokyo
     Locality Name (eg, city) []:Bunkyo
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:Private CA
     Organizational Unit Name (eg, section) []:
     Common Name (eg, YOUR name) []:kagyuu
     Email Address []:kagyuu@hondou.homedns.org
    • 必要が有れば、/etc/ssl/openssl.cnf を編集する
      • オブジェクト認証も行う(Excel VBAなど) → nsCertType? を編集。デフォルトではオブジェクト認証以外を行える
      • 証明書の有効期限の変更 → default_days を編集。デフォルトでは365日。3650日(10年)に変更。
    • ‐絨未稜Ь攀ヾ悗両斂製颪ある場合に指定。ここでは何も入れない
    • 認証機関のパスワード
    • 〜適当に
  4. これで demoCA ができました
    grape:/usr/local/ssl # ls
    .  ..  demoCA

証明書の発行

  1. 申請書の作成(各サイトの運営者の仕事)
       grape:/usr/local/ssl # /usr/share/ssl/misc/CA.pl -newreq-nodes
       Generating a 1024 bit RSA private key
       ...........++++++
       .......++++++
       writing new private key to 'newreq.pem'
       -----
       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) [AU]:JP
     State or Province Name (full name) [Some-State]:Tokyo
     Locality Name (eg, city) []:Bunkyo
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:Hondoh
     Organizational Unit Name (eg, section) []:Web Admin
     Common Name (eg, YOUR name) []:hondou.homedns.org
     Email Address []:kagyuu@hondou.homedns.org
       
       Please enter the following 'extra' attributes
       to be sent with your certificate request
     A challenge password []:
     An optional company name []:
       Request (and private key) is in newreq.pem
       grape:/usr/local/ssl # ls
       .  ..  demoCA  newreq.pem
    • 証明書を発行してもらう秘密鍵には passphrase を設定しません。(passphraseを設定するとApacheを起動する毎に入力する必要がある)
    • ΔSSL通信をするサイト名を記入します
    • 後は適当に
    • 本来であれば、認証局に申請書を送付して証明書を発行してもらいます。ここでは、オレオレ認証局を使うので、そのまま作業を進めます。
  2. 証明書の発行(認証局の仕事)
       grape:/usr/local/ssl # /usr/share/ssl/misc/CA.pl -sign
       Using configuration from /etc/ssl/openssl.cnf
     Enter pass phrase for ./demoCA/private/cakey.pem:****************
       Check that the request matches the signature
       Signature ok
       Certificate Details:
               Serial Number: 1 (0x1)
               Validity
                   Not Before: Aug 18 17:44:34 2006 GMT
                   Not After : Aug 15 17:44:34 2016 GMT
               Subject:
                   countryName               = JP
                   stateOrProvinceName       = Tokyo
                   localityName              = Bunkyo
                   organizationName          = Hondoh
                   organizationalUnitName    = Web Admin
                   commonName                = hondou.homedns.org
                   emailAddress              = kagyuu@hondou.homedns.org
               X509v3 extensions:
                   X509v3 Basic Constraints:
                       CA:FALSE
                   Netscape Comment:
                       OpenSSL Generated Certificate
                   X509v3 Subject Key Identifier:
                       BC:E5:0A:10:94:5A:71:31:5F:04:CD:F8:71:17:98:C8:69:08:89:31
                   X509v3 Authority Key Identifier:
                       keyid:5B:68:21:F5:6D:0F:94:60:55:6A:2F:55:9A:8E:7E:07:F2:58:42:CB
                       DirName:/C=JP/ST=Tokyo/L=Bunkyo/O=PrivateCA/CN=kagyuu/emailAddress=kagyuu@hondou.homedns.org
                       serial:A8:16:81:D7:6B:0A:F2:FF
       
       Certificate is to be certified until Aug 15 17:44:34 2016 GMT (3650 days)
       Sign the certificate? [y/n]:y
       
       
     1 out of 1 certificate requests certified, commit? [y/n]y
       Write out database with 1 new entries
       Data Base Updated
       Signed certificate is in newcert.pem
       grape:/usr/local/ssl # ls
       .  ..  demoCA  newcert.pem  newreq.pem
    • ’Ь擽匹離僖好錙璽匹鯑力します
    • カレントディレクトリにある申請書(newreq.pem)に対して、証明書(newcert.pem)が発行されます

Apache2用に鍵セットと証明書を抽出

  1. Webサーバの秘密鍵の抽出
    grape:/usr/local/ssl # openssl rsa -in newreq.pem -out server.key
    writing RSA key
  2. Webサーバの証明書の抽出
    grape:/usr/local/ssl # openssl x509 -in newcert.pem -out server.crt
  3. Webサーバの公開鍵はどこへ行った?
    • CAの秘密鍵で暗号化されている証明書に格納されています
    • CAの公開鍵で証明書が複号できれば、証明書は確かにCAで暗号化されたことが分かる
    • 証明書の復号結果がWebサーバの公開鍵

Apache2の設定

  1. mod_sslの有効化
    1. [Yast]-[ネットワークサービス]-[HTTPサーバ]
      ssl_yast1.png
    2. [モジュール]-[ssl] で [ステータスの切り替え]
      ssl_yast2.png
  2. SSL有効化フラグの設定
    • /etc/apache2/ssl-global.conf を見ても分かるとおり、Suseでは環境変数を見てSSLを有効化しているようだ
      # This global SSL configuration is ignored if
      # "SSL" is not defined, or if "NOSSL" is defined.
      <IfDefine SSL>
      <IfDefine !NOSSL>
      <IfModule mod_ssl.c>
       #
       #   Some MIME-types for downloading Certificates and CRLs
       #
       AddType application/x-x509-ca-cert .crt
       AddType appli
       ・・・
    1. [Yast]-[システム]-[/etc/sysconfigエディター]
      ssl_yast3.png
    2. [Network]-[WWW]-[Apache2]-[APACHE_SERVER_FLAGS] に、「-D SSL」を設定
      ssl_yast4.png
  3. Virtual Host の設定
    • YastからデフォルトホストにSSL機能を付加できるようだがよく分からん
    • SSL用のVirtual Hostのひな形が用意されているのでそれを利用してSSL用のVirtual Hostを追加する
    • 追加の仕方は簡単で、/etc/apache2/vhosts.d に、*.conf ファイルを置き、Apacheを再起動すると追加される
      grape:/etc/apache2/vhosts.d # cp vhost-ssl.template vhost-ssl.conf
      grape:/etc/apache2/vhosts.d # vi vhost-ssl.conf
      
       ・・・(いろいろいじって)・・・
      
      grape:/etc/apache2/vhosts.d # diff vhost-ssl.template vhost-ssl.conf -u
      --- vhost-ssl.template  2005-09-10 03:39:20.000000000 +0900
      +++ vhost-ssl.conf      2006-08-19 03:58:09.000000000 +0900
      @@ -36,8 +36,8 @@
      
              #  General setup for the virtual host
              DocumentRoot "/srv/www/htdocs"
      -       #ServerName www.example.com:443
      -       #ServerAdmin webmaster@example.com
      +       ServerName hondou.homedns.org:443
      +       ServerAdmin kagyuu@hondou.homedns.org
              ErrorLog /var/log/apache2/error_log
              TransferLog /var/log/apache2/access_log
      
      @@ -57,16 +57,18 @@
              #   in mind that if you have both an RSA and a DSA certificate you
              #   can configure both in parallel (to also allow the use of DSA
              #   ciphers, etc.)
      -       SSLCertificateFile /etc/apache2/ssl.crt/server.crt
      +       #SSLCertificateFile /etc/apache2/ssl.crt/server.crt
              #SSLCertificateFile /etc/apache2/ssl.crt/server-dsa.crt
      +        SSLCertificateFile /usr/local/ssl/server.crt
      
              #   Server Private Key:
              #   If the key is not combined with the certificate, use this
              #   directive to point at the key file.  Keep in mind that if
              #   you've both a RSA and a DSA private key you can configure
              #   both in parallel (to also allow the use of DSA ciphers, etc.)
      -       SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
      +       #SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
              #SSLCertificateKeyFile /etc/apache2/ssl.key/server-dsa.key
      +        SSLCertificateKeyFile /usr/local/ssl/server.key
      
              #   Server Certificate Chain:
              #   Point SSLCertificateChainFile at a file containing the
      @@ -86,6 +88,8 @@
              #         Makefile to update the hash symlinks after changes.
              #SSLCACertificatePath /etc/apache2/ssl.crt
              #SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
      +        SSLCACertificatePath /usr/local/ssl/demoCA
      +        SSLCACertificateFile /usr/local/ssl/demoCA/cacert.pem
      
              #   Certificate Revocation Lists (CRL):
              #   Set the CA revocation path where to find CA CRLs for client
      grape:/etc/apache2/vhosts.d #
  4. 最後に、HTTPS(Port443)をあけて ( [Yast]-[セキュリティとユーザ]-[ファイアウォール] )
    ssl_yast5.png
  5. 再起動
    grape:/etc/apache2/vhosts.d # /etc/rc.d/apache2 restart
    Syntax OK
    Shutting down httpd2 (waiting for all children to terminate)          done
    Starting httpd2 (prefork)                                             done
  6. ADSLルータの設定で、443ポートをあけるのも忘れずに

設定結果

ssl_access.png

httpsでアクセスすると通信が暗号化されるようになった

Squirrelmailの強制SSLアクセス

/srv/www/htdocs/squirrelmail/index.php のりダイレクト先をhttpsにする。

  // if we are, go ahead to the login page.
- header('Location: src/login.php');
+ header('Location: https://hondou.homedns.org/squirrelmail/src/login.php');

Suse 10 Server


*1 規格自体はTCPとアプリケーション層の間に入る中立的なものなので、SSLを使った FTP/SMTP なども可能だが、現実的には HTTP でしか使われていない

添付ファイル: filessl_yast2.png 746件 [詳細] filessl_yast5.png 714件 [詳細] filessl.png 732件 [詳細] filessl_yast3.png 746件 [詳細] filessl_access.png 742件 [詳細] filessl_yast1.png 877件 [詳細] filessl_yast4.png 872件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2006-08-19 (土) 14:37:07 (3763d)
ISBN10
ISBN13
9784061426061