14.8. OpenSSL
戻る〓 | 第14章 セキュリティ | 〓次へ

## 14.8. OpenSSL

執筆: Rhodes Tom [FAMILY Given].

FreeBSD には、OpenSSL ツールキットが含まれています。 OpenSSL は、 通常の通信層の上位にあるトランスポート層を暗号化し、 多くのネットワークアプリケーションおよびサービスと組み合わせて使用できます。

OpenSSL は、 メールクライアントの暗号化された認証、 クレジットカードでの支払いといったウェブベースの取引などで使われます。 www/apache22 および mail/claws-mail といった多くの port では、 OpenSSL とともに構築するコンパイルに対応しています。

### 注記:

多くの場合、Ports Collection は、 make の `WITH_OPENSSL_BASE` が明示的に 「yes」 に設定されていないと、 security/openssl port の構築を試みます。

FreeBSD に含まれている OpenSSL のバージョンは、Secure Sockets Layer v2/v3 (SSLv2/SSLv3) および Transport Layer Security v1 (TLSv1) ネットワークセキュリティプロトコルに対応しており、 多目的な暗号化ライブラリとして使うことができます。

### 注記:

OpenSSL は、 IDEA アルゴリズムに対応していますが、 合衆国の特許により、デフォルトでは無効になっています。 もし使用したいのであれば、ライセンス条項を必ず確認し、 ライセンス条項に合致するのであれば、 `/etc/make.conf` において `MAKE_IDEA` 変数を設定してください。

最も一般的な OpenSSL の利用方法のひとつは、 ソフトウェアアプリケーションが使えるように証明書を提供することです。 これらの証明書により、会社または個人の公開鍵が、 改ざんやなりすましが行われていないことを確認できます。 もし問題となっている証明書が、「認証局」 (CA) により検証されなければ、 警告が表示されます。 CA は、VeriSign のような会社で、個人または会社の公開鍵の検証を行えるように、 証明書に署名を行います。 証明書を作成するには費用がかかり、 証明書の使用は必要条件ではありませんが、 証明書を使うことで、 ユーザを安心させることができます。

### 14.8.1. 証明書の作成

以下のコマンドにより、証明書を作成できます。

    # openssl req -new -nodes -out req.pem -keyout cert.pem
    Generating a 1024 bit RSA private key
    ................++++++
    .......................................++++++
    writing new private key to 'cert.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]:US
    State or Province Name (full name) [Some-State]:PA
    Locality Name (eg, city) []:Pittsburgh
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
    Organizational Unit Name (eg, section) []:Systems Administrator
    Common Name (eg, YOUR name) []:localhost.example.org
    Email Address []:trhodes@FreeBSD.org

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

「Common Name」 プロンプト直後に表示されているのは、 ドメイン名です。 このプロンプトでは、検証するサーバ名の入力が必要となります。 ドメイン名以外を入力すると、役に立たない証明書が作成されます。 他のオプションとして、有効期限を指定したり、 別の暗号化アルゴリズムを選択することができます。 オプションの完全なリストは、 openssl(1) で説明されています。

このコマンドを実行したディレクトリには、 2 つのファイルが作成されているはずです。 1 つは、証明書要求 `req.pem` です。 このファイルを CA に送ると、 CA は含まれている内容を検証し、 検証に成功すると、証明書要求に署名を行い、 作成された証明書を送り返します。 もうひとつ、`cert.pem` と呼ばれるファイルが生成されます。 これは証明書の秘密鍵であり、 どのようなことがあっても保護しなくてはなりません。 もし、他の人の手に渡ると、手に入れた人は、 ユーザまたはサーバになりすますことができてしまいます。

CA の署名が必要ない場合には、 自己署名証明書を作成できます。 最初に RSA の鍵を生成してください。

    # openssl dsaparam -rand -genkey -out myRSA.key 1024

次に、CA 鍵を生成してください。

    # openssl gendsa -des3 -out myca.key myRSA.key

この鍵を使って証明書を作成してください。

    # openssl req -new -x509 -days 365 -key myca.key -out new.crt

新しく 2 つのファイルがこのディレクトリに作成されます。 プライベート鍵 `myca.key` および 証明書 `new.crt` です。 これらのファイルを、好ましくは `/etc` 以下で、 `root` のみが読むことのできるディレクトリに置く必要があります。 許可属性は 0700 が適切です。 許可属性は chmod(1) を使って設定できます。

### 14.8.2. 証明書の使用

証明書の一つの利用方法は、Sendmail MTA への接続を暗号化することです。 これにより、 ローカルの MTA 経由でメールを送信するユーザが、 テキスト認証を使用しなくてもすむようになります。

### 注記:

いくつかの MUA は、 ユーザが証明書をローカルにインストールしていないと、 エラーを出力します。 証明書のインストールに関する詳細な情報については、 ソフトウェアに付随の文書を参照してください。

Sendmail を設定するには、以下の行をローカルの `.mc` ファイルに含めてください。

    dnl SSL Options
    define(`confCACERT_PATH',`/etc/certs')dnl
    define(`confCACERT',`/etc/certs/new.crt')dnl
    define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
    define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
    define(`confTLS_SRV_OPTIONS', `V')dnl

この例では、 ローカルで証明書および鍵ファイルは、ローカルの `/etc/certs/` に置かれています。 ファイルの編集を保存し終わったら、 `/etc/mail` において `make install` と入力することで、ローカルの `.cf` ファイルを再構築する必要があります。 その後、`make restart` と入力して、Sendmail デーモンを再起動してください。

すべてがうまくいっていれば、 `/var/log/maillog` にはエラーメッセージは出力されず、 Sendmail がプロセスの一覧に表示されます。

以下は簡単な試験の例で、telnet(1) を使って、 メールサーバに接続しています。

    # telnet example.com 25
    Trying 192.0.34.166...
    Connected to  example.com
    Escape character is '^]'.
    220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
    ehlo example.com
    250-example.com Hello example.com [192.0.34.166], pleased to meet you
    250-ENHANCEDSTATUSCODES
    250-PIPELINING
    250-8BITMIME
    250-SIZE
    250-DSN
    250-ETRN
    250-AUTH LOGIN PLAIN
    250-STARTTLS
    250-DELIVERBY
    250 HELP
    quit
    221 2.0.0 example.com closing connection
    Connection closed by foreign host.

出力に 「STARTTLS」 行が表示されれば、 すべてが適切に機能しています。

戻る〓 | 上に戻る | 〓次へ
14.7. Kerberos5〓 | ホーム | 〓14.9. VPN over IPsec

本文書、および他の文書は https://download.freebsd.org/ftp/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。