OpenSSLのインストール

OpenSSLはSSL通信を行う為のライブラリなどを提供します。
また、証明書を作成する為のコマンドなどもそろっています。
ここで紹介する手順は証明書を自己署名で作成します。
その為、暗号化には意味がありますが、本来SSL機能が持つ、証明としての機能は意味を持ちません。

さて、インストールと証明書の作成手順です。
  1. ソースコードのダウンロード
  2. make及びインストール
  3. ldconfigの実行
  4. 秘密鍵、証明書の作り方
  1. ダウンロード
    http://www.openssl.org/sourceより最新のソースコードをダウンロードします。
    現在のバージョンでは、openssl-0.9.7a.tar.gzです。
    ダウンロードしたファイルは/usr/local/srcディレクトリに置いて下さい。
  2. make及びインストール
    makeする際の注意点ですが、OpenSSLでは暗号化に関する特許などが絡んできます。
    従って、よく分からないものはコンパイルオプションを使って使用しない方がよいでしょう。
    また、インストールするディレクトリを指定していますが、この場合、後で、LD_LIBRARY_PATHに指定するもしくは、ld.so.confに登録するなど面倒な事も多いので、--openssldirは指定する必要はないです。私の場合、インストールディレクトリを常に/usr/local/xxxにインストールしておきたいので指定しただけです。深い意味はありません...。
    [root src]# tar xzvf openssl-0.9.7a.tar.gz
    [
    root src]# cd openssl-0.9.7a
    [
    root openssl-0.9.7a]# ./config --openssldir=/usr/local/openssl no-rc5 no-idea shared
    [root openssl-0.9.7a]# make
    [root openssl-0.9.7a]# make install

  3. ldconfigの実行
    configを実行した際に、ライブラリのインストールディレクトリの指定を、ldconfigで検索されるパス上になるように指定した場合は本章の作業は不要です。openssl-0.9.7cではデフォルトで/usr/local/ssl/lib/にインストールされるので、この作業が必要になります。
    OpenSSLをインストールした際にshared libraryがインストールされますが(/usr/local/openssl/lib)、そのパスは、システムの検索対象になっていません。
    これではOpenSSLのshared libraryを使うアプリケーションを起動してもエラーになってしまいます。
    例えばこんな感じ。
    [postgres bin]$ psql
    psql: error while loading shared libraries: libssl.so.0.9.7: cannot open shared object file: No such file or directory
    これを回避するには環境変数LD_LIBRARY_PATHに登録するか、ldconfigでパスを指定するかのどちらか。
    ldconfigはroot権限が必要なのでroot権限を持たない人は環境変数を使うしかありません。
    [postgres bin]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib$
    root権限がある場合は次の通りldconfigでそのパスを登録します。
    [postgres bin]$ ldconfig /usr/local/openssl/lib
    また、次回システムの再起動時からは自動的に読み込まれるように/etc/ld.so.confにライブラリのディレクトリを指定する必要があります。
    /usr/X11R6/lib
    /usr/lib/gconv
    /usr/lib/qt/lib
    /usr/local/lib
    /usr/i386-linuxaout/lib
    /usr/lib/libc5-compat
    /usr/local/openssl/lib
      <--追加

    それと、実行形式もPATH環境変数に登録されたディレクトリに無いと何かと不便なので、PATH環境変数に/usr/local/openssl/binも加えます。今回は、/etc/profileに追加します。ファイルの最後に以下の1行を加えます。
    export PATH=$PATH:/usr/local/openssl/bin

  4. 秘密鍵、証明書の作り方
    ApacheでのSSL通信、PostgreSQLでのSSL通信といい、証明書が必要になります。
    ここでは、PostgrSQLに使用する場合を例にとり、証明書を作成しています。
    PostgreSQL用の為にファイル名がこうなってます。が適当な名前でファイルを作成して下さい。

    まずは、秘密鍵と証明要求書の作成です。
    -keyoutで指定したファイルが秘密鍵になります。
    -outは証明書の要求に使用されます。
    [root certs]# openssl req -new -text -out postgres.req -keyout postgres.pem
    Using configuration from /var/ssl/openssl.cnf
    Generating a 1024 bit RSA private key
    .++++++
    ..++++++
    writing new private key to 'postgres.pem'
    Enter PEM pass phrase:
    <-パスフレーズは適当でよいですが後で使うので忘れないで。
    Verifying password - 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]:JP
    これ以下適当に入力します。証明書を公開目的で使うわけでないので適当でよいです。未入力にする場合は"."を入力します。
    State or Province Name (full name) [Some-State]:TOKYO
    Locality Name (eg, city) []:.
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, YOUR name) []:www.ryouto.jp
    Email Address []:webmaster@ryouto.jp

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


    今回PostgreSQL用に作成している為、パスワードを削除します。
    [root certs]# openssl rsa -in postgres.pem -out postgres.pem
    read RSA key
    Enter PEM pass phrase:
    先に入力したフレーズ
    writing RSA key

    先ほど作った証明書に自己署名します。
    -inで先ほどの証明書要求ファイルを指定
    -keyで先の秘密鍵ファイルを指定。
    -outで自己署名証明書
    [root certs]# openssl req -x509 -in postgres.req -text -key postgres.pem -out postgres.cert
    Using configuration from /var/ssl/openssl.cnf

以上でお終いです。


お問い合わせはwebmaster@ryouto.jpまで。
Copyright (C)2003 ryouto.jp. All Rights Reserved.