Tag: Apache/オレオレ証明書でSSL

目次

関連ページ

参考情報

概要

  • ちゃんとしたSSL対応Webサーバーを設置する場合、普通、有料サービスを使う必要がある(無料のもあるけど)。
  • ただしイントラネットなどで、経路を暗号化するためだけに、自前で証明書を作成し利用することもできる。証明書の種類がたくさんあるので最初に整理すると次のようになる。オレオレ証明書をopensslで作る(詳細版) - ろば電子が詰まっているより。
    ファイル名機能
    server.key秘密鍵 (Private Key)
    server.csr証明書署名要求 (CSR)
    server.crtサーバ証明書(CRT)
  • サーバー側で秘密鍵を作成し、認証局(CA)に証明書要求をわたし、返却されたサーバー証明書を、Webサーバーで使用する。
  • 認証局は、その秘密鍵が本当に、その通信相手のものかを証明するために必要。
  • この認証局を自分でやってしまうのがオレオレ認証となる。
  • ただしこのままだとブラウザに警告が表示される、ルート証明書をクライアントのブラウザに入れると警告は表示されなくなる。ただしこれには弊害が指摘されている。
  • ながながと書かれているが、用はプライベートで運営している認証局のセキュリティ保全ができず、認証局の秘密鍵が流出した場合、そのプライベートなルート証明書をインストールしたクライアントのセキュリティが危険にさらされるということらしい。
  • ということで、テスト目的ならば、警告表示状態でオレオレ証明書サーバーを使ってもらうのが妥当かも。

具体的手順

秘密鍵(server.key)の作成

  • 適当なディレクトリで以下のコマンドを実行。
    # openssl genrsa 2048 > server.key
  • 2048は2048バイトの鍵作成オプション。パスフレーズは適当に。-aes128オプションを追加すると秘密鍵が暗号化されるが、Apache起動時にパスフレーズが必要となるので現実的ではない。

証明書署名要求(server.csr)の作成

  • 以下のコマンドで実行する。
    openssl req -new -key server.key > server.csr
  • 途中のドメイン情報で、Common Nameだけはサーバーのドメインとピッタリ一致させとかないといけない。
    Country Name (2 letter code) [XX]:JP
    State or Province Name (full name) []:Tokyo
    Locality Name (eg, city) [Default City]:Kanda,Chiyoda-ku
    Organization Name (eg, company) [Default Company Ltd]:Akihabara Inc.
    Organizational Unit Name (eg, section) []:Akihabara Development Division
    Common Name (eg, your name or your server's hostname) []:akihabara.development.com
    Email Address []:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    

サーバー証明書(server.crt)の作成

  • この秘密鍵はサーバー秘密鍵と別のほうが良い?とりあえず同じでもいいらしい。
    openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt

Apacheの設定

  • server.crtと、server.keyを、/etc/httpd/conf/keys以下にコピーしておく。
  • CentOSの場合、ssl.confで設定する。全体のアクセス制限が、ssl.confのアクセス制限より優先されるらしいので注意。
    DocumentRoot "/home/swww"
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateFile /etc/httpd/conf/keys/server.crt
    SSLCertificateKeyFile /etc/httpd/conf/keys/server.key
    

確認

  • apacheを再起動しhttpsでアクセスして確認。

SSLクライアント認証簡易版

クライアント用秘密鍵の作成(client.key)

  • 以下のコマンドで生成。
    openssl genrsa -out client.key 1024

クライアント用証明書要求の生成(client.csr)

  • 以下のコマンドで生成。
    openssl req -new -key client.key -out client.csr -sha1

クライアント用証明書の生成

  • 以下のコマンドで生成。
    openssl x509 -in client.pem -out client.crt -req -signkey client.key -days 365 -sha1

p12ファイルの生成。

  • 以下のコマンドで生成。
    openssl pkcs12 -export -inkey server.key -in server.crt -out server.p12

Apacheの設定の変更

  • SSLCACertificateFileを指定する。 SSLCACertificateFile /cert/client.crt
  • サーバーを再起動して、server.p12ファイルあればアクセスできることを確認。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-04-13 (水) 16:48:08