SSLeay and SSLapps FAQ (1998.9.24)
(Draft) T J Hudson tjh@cryptsoft.com, E A Young eay@cryptsoft.com 24 September 1998 の日本語訳です。 オリジナルのドキュメントははこれより新しくなっている可能性がありますのでhttp://www.psy.uq.oz.au/~ftp/Crypto/を見て下さい。 日本語訳に関する責任はインフォサイエンス(株)にあります。日本語訳に関する質問、誤訳の指摘などはssleay@infoscience.co.jpまで御連絡ください。この日本語訳の公開を快諾していただいたT.J.HudsonとE.A.Youngに感謝します。
1998年9月24日版のFAQです。
SSLeayはNetscapeのセキュアソケットレイヤー - Netscapeセキュアサーバーやナビゲーターのソフトウェア暗号プロトコル - をインプリメントしたフリーソフトです。
SSLeayはS-S-L-e-a-y(各文字を個々に)と発音します.
SSLeayはSSLv2(version 2)とSSLv3(version 3)とTLSv1をSSLeay-0.9.0のリリースより実装しています。
https://tls.cryptsoft.comにはテストサーバが動いていて、共同で利用する命令はtls@cryptsoft.comにメールで送ってください。
これはEric Youngeay@cryptsoft.comによって公開されている様々なプロトコルに関する文書だけからコーディングされました。
SSLの実装にとりかかろうと最初にいいだし、αテスト、開発者(Eric)との交渉、Windowsへの移植、ドキュメント作成などをしたのはTim Hudson tjh@cryptsoft.comです.
この実装は、Tim Hudsontjh@cryptsoft.comによって、以下のアプリケーションのSSLサポートに使われてきました:
他の人達の初期の仕事によって、今では以下のアプリケーションでも使えます:
また、以下のアプリケーションもサポートしています:
SSLeayは以下の暗号アルゴリズムを実装しています:
このドキュメントのCopyrightはTim Hudson tjh@cryptsoft.comにあります。使用と再配布の制限についてはCOPYRIGHTファイルを見て下さい。
それは最も難しい質問の一つで、まだ明解な答えがありません。あなたが結論を出すにはかなりの文書を読み(SSLeayのソース配布の中にある四方八方に分散したファイルを見て下さい) - そして弁護士に相談に行く必要があります。くりかえしますが、この文書は私の見解であって、そのように扱うべきです - reality could be quite different to how I happen to see things :-)。
簡単に言えば:
無料です。パッケージ自体はフリーです。いくつかの些細な条件はあり、ソース配布の中のCOPYRIGHTファイルに明快に書いてあります。In short - attribution is mandatory, and no publicly available version of this code can have a different license.
COPYRIGHTファイルの中の正確な文面を確認してください。SSLeayを使うパッケージに要求されることが"the acknowledgement must take ..."というように詳述されています。リリースごとに変わりますので製品を出すまえに忘れずに確認して下さい。
はい。無料で。ライセンスを注意深く読んで下さい(SSLeayソース配布の中のCOPYRIGHTファイル参照)。もしCOPYRIGHTについて不明の点があればEric Youngeay@mincom.comに直接連絡してください。
現時点では、プログラマーの観点からのドキュメントは非常に少なく、ライブラリーのコードを読み、どのようにパッチがあてられているかを見る必要があります。現存するアプリケーションにSSLサポートを加えるのは非常に簡単です。
SSLをエンドユーザーまたは開発者として使い始める上で考慮しなければならない事はドキュメントに書かれています - 確かにこのドキュメントはもっと充実する必要がありますが;しかしドキュメントを読めばほとんどの疑問に対する答えが得られる(そしてさらに疑問が生じることも少ない)はずです。
最終的にEricがライブラリー自体のドキュメントを作りました ... SSLeayソース配布の中のdocディレクトリーとhttp://www.psy.uq.edu.au/ftp/Crypto/ssleayにあるオンライン情報を見て下さい。
最良の出発点は、SSLeayを使ったクライアント・サーバープログラムやパッチをあてたアプリケーションの中のexample codeを見ることです - それぞれのアプリケーションの内部構造は非常に似通っています
もし躓いたらssl-usersメーリングリストのアーカイブを覗いて下さい ... またはssleay@mincom.com宛のemailで直接我々に聞いて下さい。
SSL Protocol Specificationの詳細は以下にあります:
TLS (次世代のSSL)の詳細があります:
SSLRef (Netscape のリファレンス実装SSL)はhttp://home.netscape.com/newsref/std/sslref.htmlにあります。
Netscapeによって管理されているSSLに関する議論をするためのメーリングリストもssl-talk@netscape.comにあります。subjectか本文をsubscribeにしてssl-talk-request@netscape.comにメールを送るとメーリングリストに参加できます。
SSL-Talk List FAQはhttp://www.consensus.com/security/ssl-talk-faq.htmlにあります。これには多くの有用な情報が含まれています。
証明書の使用に関するドキュメントがあります:http://home.netscape.com/newsref/std/ssl_2.0_certificate.html。これには、"application/x-x509-ca-cert" MIME typeに関する記述も含まれています。
Netscapeのセキュリティーに関する一般的な情報はhttp://home.netscape.com/eng/securityで得ることができます。
さらに、Jeff Weinstein jsw@netscape.comはNetscape Navigator 3.0における鍵生成(Key Generation)・証明書の拡張(Certificate Extensions)・証明書のダウンロードに関する記述をhttp://home.netscape.com/eng/security/certs.htmlにまとめています. これは一読の価値があります!
暗号に関するかなり充実したリストがhttp://www.cs.hut.fi/cryptoにあります。また公開されているソフトウェアの簡単なリストがhttp://www.cs.hut.fi/crypto/software.htmlにあります。
http://www.enter.net/~chronos/cryptolog.htmlにあるCrypto Logにはinternet cryptography resourcesの明快なリストが含まれています。
認証サービス一般に関する概要がRSAのftp://ftp.rsa.com/pub/csc/docs/wp.epsにあります。これは1993年7月に書かれた40ページのドキュメントで、良い副読本です。
Adam Shostackadam@homeport.orgはhttp://www.homeport.org/~adam/cryptoで、最も一般に使える暗号化ライブラリーについて興味ある比較をしています。
Raph Levien raph@c2.orgのhttp://www.c2.net/~raph/comparison.htmlには、"A brief comparison of email encryption protocols"というemailの異なる暗号化オプションに関するドキュメントがあります。
Xcert Software Incはhttp://www.xcert.com/support/sites.htmlに、暗号化と一般の電子商取引の分野に関するオンライン情報の膨大なリファレンスリストを持っています。
Peter Guttman (pgut001@cs.auckland.ac.nz)は情報(X509情報を含む)をリファレンスするリンクの包括的なリストを管理しています:
Peter は便利な(実用的な)X509で動く"joys"の解説を用意しています:
Stefan Kelm (kelm@pca.dfn.de)は証明書とツールキットに関する情報の使いやすいリンクを集めています:
SSLeayの仕事の一部として、SSLを使用可能なアプリケーションを書くときに重要だと思われる事項が記してあるドキュメントを寄せ集めました。当然、ドキュメントとしては最新のものではありませんが、多くの有用な情報を含んでいます。
私は、以下のアプリケーションをSSLeayが使えるように書き換えた時、SSLeayのサポートがしやすいように、SSLが使えるようにするために要する労力やアプリケーションを書く際にしなければならないことがわかる、移植に関するメモを書きました。
Holger Reif(Holger.Reif@PrakInf.TU-Ilmenau.DE)はhttp://www.heise.de/ix/artikel/E/9606128でSSLeay-0.5.xの詳細をとてもわかりやすく書いています。これはドイツ語でも読むことができます。
Dave Madden(dhm@paradigm.webvision.com)はhttp://paradigm.webvision.com/developers/casetup.htmlに、CAに役立つようなセットアップに必用なことについて、多様なソースからの注意をまとめています。
Frederick J. Hirsch(f.hirsch@opengroup.org)はhttp://www.opengroup.org/RI/www/prism/wwwj/に、オンラインで役に立つIntroducing SSL and Certificates using SSLeayというタイトルの文書を載せています。
Rudolph Pienaar (rudolph@enterprise.mikom.csir.co.za)はhttp://www.mikom.csir.co.za/SSLeay/にHOWTO集を載せています。
Stephan Kolletzki kolletzki@darmstadt.gmd.deとDavid P Kemp dpkemp@missi.ncsc.milが認証のAPIの分野に関する以下のオンライン情報源のリストを提供してくれたことに感謝します。
Version 1, Dec 1995 があります。現在のバージョンは2.0で、http://www.entrust.com/downloads/cmsapi.pdfからダウンロードできます。
http://www.intel.com/ial/security/specs.htm
http://www.microsoft.com/intdev/security/capi/capiref.zip
http://www.esat.kuleuven.ac.be/cosic/sesame
The SESAME V4 Public Key Management Application Developers' Guide describes the PKM API (pkm_begin, pkm_get_pub_key, etc).
http://www.darmstadt.gmd.de/secude
European multipurpose security toolkit + applications for Unix and PC including APIs for crypto/X.509/GSSv2/PEM/PKCS/SMIME and utilities/GUI for digital ID maintainance
これは(信じようが信じまいが)最もよく尋ねられた質問です
認証のRSA(今は実際にはVerisign)への全面的な依存は、Netscapeブラウザーがリリース1.xの時に、どの認証局が信頼できるかを変更することを許さず、4社のhardcoded CAだけを信頼したことから始まりました。
Netscapeナビゲーターはリリース2.x(β)からユーザーによるCAの変更をサポートし始めました。もしユーザーがhardcoded CA以外によって署名された証明書を使っているサービスに接続した場合、ユーザーはそれを信頼できるCAのリストに追加するかどうかを訊かれます。これは基本的に、今やセキュリティートラストポリシーはユーザーの手中にあることを意味します。このポリシーはリリース3.xまで続き、Netscapeはさらに標準CAのリストを(Thawte Consultinghttp://www.thawte.comを含む)いくつかの米国外のCAも含むように拡張しました。認証局のリストに私が契約したすべてのCAのリストがあります。
答えはYesです。Verisignは証明書の発行に関するポリシーを変更し、セキュリティライブラリとしてSSLeayを使っている、登録されたアプリケーションとApacheの派生版には発行するようにしました。
現在のポリシーについての詳細は:
以前Verisignは外部の暗号解析にもかかわらず必要としました(そしてSSLeay自身は現在のカテゴリーに自動的には適応しません)。
もしあなたがすでにRSAの証明書を持っているならば、あなたはそれを(合法的に)SSLeay対応のhttpdで使うことができるでしょうか? Verisignから得た情報によると、このようなことをすることはVerisignから証明書を得るためのライセンス契約に反することになります。もしあなたの状況がよくわからなければ、Verisignに直接連絡をとって下さい。
もしあなたが米国内にいるという"好運"に恵まれているならば、Alex Tang altitude@cic.netが経験したプロセスの詳細を読むべきです。これはhttp://petrified.cic.net/~altitude/ssl/ssl.saga.htmlに詳しく書いてあり、非常に"興味深い"ものです。
注: Microsoftは状況を複雑にしてしまいました。 Internet ExplorerはCAのユーザーによる変更を自動ではサポートしておらず、Netscape Navigator 2.xの時の状態だからです。
MSIE3はユーザーがCAを追加するのをサポートしていますが、未知のCAに遭遇した際に、それを(Navigator 3.xのように)CAのリストに追加するオプションを提示するということはありません。
MSIE4はサーバー認証が既知のCAによってサインされていないとしても、接続のリクエストを継続することをサポートします; しかしながら、サイトの認証はサイトへの接続を再び許可しなければならないブラウザを再起動すると、セーブされません。
Mosaicへのパッチは、現存するいかなるセキュアサーバーとも問題なく接続できるように、サーバーの証明書のチェックをしていません。 しかし、もしあなたがクレジットカード情報のやりとりをするつもりならば、これはおそらく採用すべきポリシーではないでしょう - そのかわりに、クライアントは重要な情報を渡す前に、サーバーを信頼できるリストを参照してチェックするといった何らかのセキュリティー認証の手続きをするべきです。
現時点では、どのようにすれば認証管理やauthorisation processがglobalにうまくいくのかはよくわかっていません。
あなたのサーバーに認証プロセスを加えるのは非常に簡単です:しかし、NetscapeやMicrosoftが行っている、そしてこれからも継続して行うであろう製品への投資を考えると、個人的にはNCSA Mosaicが長期にわたって使えるブラウザーの候補であるとは思えません(このため私は継続的な更新をしてきていません。なぜなら私はもはやdecent tableをサポートしないブラウザーを使うことができないので、私自身何の意義も見出せないからです)。
Netscapeは1998年3月31日にNetscape Navigatorのソースをリリースしました。詳細はhttp://www.mozilla.orgです。
Netscapeはアメリカに基礎を置いているので、コードに関連する全ての暗号化とセキュリティは、ソースのリリースから外されています。
Mozilla Crypto GroupはSSLeayを使っているMozillaに暗号を返すために作られました。その詳細は(Cryptozillaという名が付いています):
私たちはさらに多くのアプリケーションを得るために、私たちと同じ条件(できたものはattributionは必要だがそれ以外はフリー)で貢献できる人を必要としています。 もしあなたがアプリケーションにSSLをサポートしたら私たちに教えて下さい(できればパッチも)。
しかし、もしあなたがどのような形ででも寄付をしたいならば、誰もいやとは言わないし、次に何をやるか、どれだけ早くやるかに影響を与えるかもしれません。 これを疑うのならば、ssleay@cryptsoft.comに直接連絡してください。
もし、私たちがアクセスしないUNIX派生版にあなたがアクセスして(バンド幅的に)良く接続でき、少し余分な負荷があってもかまわないならば、SSLアプリケーションの普及をスピードアップできます(ライブラリー自体は非常に移植性が高く、(現在)移植性が低いのはアプリケーションのほうです)。
ssl-users@lists.cryptsoft.comメーリングリストにも参加して下さい。(このリストを管理しているmajordomo varientの利用の手引についてはssl-users-request@lists.cryptsoft.comにemailを送って下さい - 簡単にいえば、本文をsubscribe ssl-usersとしてfactotum@lists.cryptsoft.comにメールを送ります)。
もしUnixベンダーに勤めているなら、そのプラットフォーム向けの、内部ループするRSAとDESの暗号のハイパフォーマンスなアセンブラ版のお返しとして、実装に寄与するように言ってください。インテルは今まで、これをする時間を重要視している唯一のプラットフォームです(他のプラットフォームはasmバージョンを持っていますが、あまりチューンされていません)。
Tom Kee tom.kee@magnets.com maintains an archive of the mailing list at http://www.magnets.com/lists/
Holger Reif Holger.Reif@PrakInf.TU-Ilmenau.DE also maintains an archive at http://remus.prakinf.tu-ilmenau.de/ssl-users/
これは実際にはサポートの保証のない、無報酬の仕事ですが(あなたが埋め合わせをすることになります:-); しかしながら、SSLeay とその更なる開発に興味を持つ人達のためのメーリングリストがあります。 SSLeayの動作についての役に立つ専門的なコンサルタントがたくさんあります。
ssl-users@lists.cryptsoft.comメーリングリストへの入会(このメーリングリストを制御するmajordomoのコマンドの説明については、ssl-users-request@lists.cryptsoft.comにメールを送ってください。手短かに言うと、本文にsubscribe ssl-usersと書いたメールをfactotum@lists.cryptsoft.comに送ってください)
Eric Young eay@cryptsoft.com
Tim Hudson tjh@cryptsoft.com
または、二人とも捕まえるにはssleay@cryptsoft.comを使って下さい(おそらくほとんどの質問についてこれが"正解"でしょう)。
Ericはライブラリーに集中し、アプリケーションとドキュメントは全てTim(これは私です)がやりました;しかし、私たちは互いに何をやっているかを知っており、異なる時間帯に働き(そしていくつかの事については異なる意見を持っており:-)、異なる日に休暇をとるので、特殊な質問でない限り両方に連絡するほうがいいでしょう。 Windowsのinfrastructureのコードもほとんど私が書きました。
Tom Kee tom.kee@magnets.comはhttp://www.magnets.com/lists/でメーリングリストのアーカイブの保守をしています。
Holger Reif Holger.Reif@PrakInf.TU-Ilmenau.DEはhttp://remus.prakinf.tu-ilmenau.de/ssl-users/でメーリングリストのアーカイブの保守をしています。
SSLeayのソースとSSLappsのmasterは以下の場所にあります:
Note: the SSLeay Programmer Reference is in the process of being updated to SSLeay-0.6 so what is there doesn't exactly match the current version.
SSLeay is also mirrored at the following locations:
Christoph Martin christoph.martin@uni-mainz.de mirrors the SSLeay distribution (updated every 24 hours) in the following location:
The German CERT server in Hamburg
For those close to Finland
Panu Rissanen bande@nic.funet.fi mirrors SSLeay updated biweekly at:
Sites in Sweeden
Tein Yuan tyuan@beta.wsl.sinica.edu.tw mirrors SSLeay related stuff at:
Sites in South Africa
John Hay jhay@zibbi.mikom.csir.co.za and Johan Eksteen Johan.Eksteen@dent.mikom.csir.co.za mirrors SSLeay updated daily at:
Sites in Korea
Lee, Ho-sun ahmlhs@cair.kaist.ac.kr mirrors SSLeay related stuff at:
Sites in Japan
Takahiro Kiuchi kiuchi@rick.epistat.m.u-tokyo.ac.jp mirrors SSLeay related stuff at:
Ayamura Kikuchi (ayamura@ayamura.org) mirrors SSLeay related stuff updated daily at:
Sites in the UK
Steve Kennedy steve@gbnet.net mirrors SSLeay updated daily at:
Simon Gornall simon@oyster.co.uk mirrors SSLeay updated daily at:
Sites in Hong Kong
Enzo Michelangeli enzo@ima.net mirrors SSLeay updated daily at:
Sites in Taiwan
CS Lee (Lee Chee Siong) ftpowner@ftp.nchu.edu.tw mirrors SSLeay updated daily at:
Sites in Poland
Martin E. Bednarz specula@lodz.pdi.net mirrors SSLeay updated daily at:
Sites in Italy
Aniello Castiglione (anicas@cert.unisa.it) and Gerardo Maiorano (germai@cert.unisa.it) of the Salerno CERT-IT at the Dipartimento di Informatica ed Applicazioni of the Universita' di Salerno mirror SSLeay and SSLapps updated daily at:
Bruno Crispo (Bruno.Crispo@di.unito.it) from the Security Group - Department of Computer Science, University of Turin, Italy mirrors SSLeay updated weekly at:
Sites in Holland
Prebuilt packages for Linux (RedHat and Debian) for SSLeay itself and the apps are at the following location:
以下はSSLeayを使ってSSLをサポートするためのフリーのパッチが手に入るアプリケーションのリストです。
Christoph Martin christoph.martin@uni-mainz.deによる4.4BSD-Lite telnet (NEtelnet)へのパッチは:
注: Christophと私はまだ両者のコードを一つのバージョンにまとめているところです。
Simon J. Garraty sjg@zen.quick.com.auはSSLtelnet(オリジナルのパッチを基にしている)と互換性のあるSSLeayをサポートする他の異なるtelnetを実施しています。
注: Simonはまた、同じロケーションでSSLrshを利用できるようにしています。
Simonのバージョンはコンパイルするためにbmakeを必用とします ... bmakeのautoconf可能なバージョンのポインタが、彼のドキュメントページには含まれています。
SSLをサポートするApacheの最初の完全機能版(fully functional version)はBen Laurieben@algroup.co.ukによって実装されました。 もしフリーで入手できSSLが使えるWWWサーバーを探していて、コンパイル・設定・保守を自分でするのを厭わなければ、このサーバーはおそらく現時点で最良の選択でしょう。
注: もしあなたが米国内にいてこのサーバーを商用に使いたい場合には、おそらく商用RSArefかBSAFEライセンスが必要でしょう。
You should also have a look at mod_ssl which is based on Apache-SSL and provides a more supported implementation.
CERN httpdのSSLサポートはGertjan van Oosten gertjan@West.NLによって実装されました。 パッチはhttp://www.west.nl/archive/cern_httpd/HTTPS.patchを見て下さい。
Thomas Zerucha tz@execpc.comがLynxにSSLeayをサポートするためのパッチを保守しています。
最新のSSL版lynxの入手先の詳細はhttp://www.mich.com/~thomas/ftpを見て下さい ... 輸出規制を受けているかもしれない(under the might-be-export-controlled section)http://www.mich.com/~thomas/ftp/sslprox.htmlへのリンクをたどって下さい。
LynxはUnix,VMSそしてもちろんDOSをサポートするテキストベースのWWWブラウザーです。詳細についてはhttp://lynx.browser.orgを見てください。
SSLeayが使えるPerl5のモジュールがhttp://www.neuronio.pt/SSLeay.pm.htmlにあります。
Sascha Kettler (kettler@rummelplatz.uni-mannheim.de)はSSLをサポートするためにmSQL version 1.0.16にパッチをあてました。パッチは:
から入手できます。Mozilla Crypto Group (mcg@ssleay.org)はCryptozillaを作るためにNetscape Mozillaソースに暗号化を組み込みました。
Ralf Engelschall (rse@engelschall.com)はApacheとSSLeayを統合した(Apache-SSLベース)優れたモジュールをリリースしています。
SSLeayは様々なプラットフォームに対応しています。もしここで挙げられていないプラットフォームに対応させようとしているなら、ssleay@cryptsoft.comまで知らせて下さい。
SSLeayの基本リリースは以下のサポートを含んでいます。
SSLeay-0.6.1と上記はWIN16とWIN32をサポートしています。基本リリースではMicrosoft Visual C++でコンパイルするためのコマンドライン用makefileをサポートしています。msディレクトリに置いてあります。
SSLeay-0.6.4にはWIN32のマルチスレッドサポートが含まれています。
We have tested Windows 3.11, Windows 95 and Windows NT.
私たちはMac用の適当な開発環境を持っていないので、SSLeay自体はMacをサポートしていません(私の古いMac 2ciは開発用マシンにはカウントされていません)。 もしあなたが完全な開発環境付のPowerMacをEricか私に寄付する気があれば、何らかの対応はするでしょう:-)
CodeWarriorとフリーで入手できるバークレーソケット互換ライブラリー(GUSI)を使えば、どうやらMacintosh用のSSLeay-0.6.3をコンパイルすることができます。
SSLeayはAmigaのボックスの外で非常によくコンパイルします。
Nordic Global Inc. のHolger Kruse(kruse@nordicglobal.com)はAmiga 'Miami' TCP/IPスタック用のSSLeay-0.6.6をコンパイルしました。
ライブラリーのバイナリーは配布自由で、RC4なしでRSArefとリンクしているので、USAでは合法的に使うことができます。これはhttp://www.nordicglobal.com/から入手できます。RC4を持ち、標準SSLeay RSAを満たしたものとリンクしている国際的なコンパイルもあります; http://www.vapor.com/voyager/から自由に入手できます。
現在Voyager Amiga ウェブブラウザはSSLeay 0.6.6のSSLをサポートしています。SSLモジュールはRC4、IDEA、DESによって最強の暗号化をサポートしています。SSLeayのサポートはhttp://www.vapor.com/voyager/から入手できる最新版に含まれています。
注: 一度、転送されてきたAmigaのコンパイルに関するこの情報を更新します。
Ian Goldberg(iang@CS.Berkeley.EDU)はPalmPilot Professional organizer にSSLeay-0.6.6のcryptパートのほとんどをポートしました。それは古いPilotsでも作動し、おそらくPersonalでも作動しますが、テストはしていません。
Javaに関連するものはいろいろあります。SSLeay自体はJavaに移植されていませんし、我々が知る限り、移植が進められているということもありません。
http://www.phaos.comから入手できるUSA-onlyのツールキットがあります。製品版自身はJDK 1.0.2と1.1の両方で動きます。
Scott Jewell (jewellsc@pop.mts.kpnw.org)は、ソケットルーチンにSSLeayを使うための、Java用のNET.DLLを持っています。詳細はhttp://noc.kpnw.org/scottで見ることができます。
実際にはSSLを実装していませんが、CryptixはJavaのSSL実装のために要求されるたくさんのフレームワークを提供しています。
BaltimoreはJavaにSSLを実装させています。
UKの会社であるJCPはUSの輸出制限外のSSLを実装した完全なJavaを作っています。
Max Masyutin (max@ritlabs.com)はSSLeayを使ったSSLをサポートするWin32用のTinyWebサーバの開発者です(written in Delphi)。
証明書やプライベート鍵、証明書署名要求(CSR)を生成するためには、単に実行できる"ssleay"があればいいのです。
これは通常、/usr/local/ssl/binにインストールされ、もしこれがパスになければ、次の例のようにssleayよりもむしろ/usr/local/ssl/bin/ssleayを使う必要があります。
鍵を生成する過程で、randomな情報を入力する必要があります。 その正確なコンテンツが重要でないのなら、いつでもrand.datファイルを削除するか、変更することができます。
head -25 * > rand.dat OR ssleay md5 * > rand.dat OR cat file1 file2 file3 > rand.dat
ssleay genrsa -rand rand.dat > key.pem
ssleay genrsa -rand rand.dat -des 1024 > key.pem OR (if you want to use triple DES) ssleay genrsa -rand rand.dat -des3 1024 > key.pem
もし鍵からパスフレーズを外したいなら、単に以下のコマンドを使ってください:
ssleay rsa -in key1.pem -out key2.pem
パスフレーズの間はプロンプトになって、出力ファイルは暗号化されません(なんらかの暗号化オプションを含んでいないせいです(-des/-des3/-idea))
現在のところ、key1.pemを使うことのできるkey2.pemを使うことができます。
ssleay rsa -des -in key1.pem -out key2.pem OR (if you want to use triple DES) ssleay rsa -des3 -in key1.pem -out key2.pem
あたかも、必要とする、パスフレーズの保護された鍵が残した、鍵周辺のパスフレーズのない保護されたフォームが、パスフレーズを持つのに失敗するかのようにこれを行った後、key1.pemを外すべきでしょう。
証明書署名要求(CSR)とはサインするために証明書を認証局(CA)に送り、生成したプライベート鍵(認証局に送られていない)と組み合わせて使う認証フォームを得ることです。
もし要求がセキュアなウェブサーバで行われるなら、"Common Name"でプロンプトのときに、使うことを計画しているhttps URLにある名前と一致する名前を入力するべきです。それはFQDNでなければなりません。つまりwww.domain.comのような
もし"extra attributes"でプロンプトなら、単にそれを無視して空白のままにしておきます(もしCAによらないで直接行うなら)
ssleay req -new -key key.pem -out csr.pem
csr.pem の中身は以下のようなものです:
-----BEGIN CERTIFICATE REQUEST----- MIIBETCBvAIBADBXMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEh MB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRAwDgYJKoZIhvcNAQkB FgFgMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL6nPTy3avNgbubx+ESmD4LV1LQG fcSh8nehEOIxGwmCPlrhTP87PaA0XvGpvRQUjCGStrlQsd8lcYVVkOaytNUCAwEA AaAAMA0GCSqGSIb3DQEBBAUAA0EAXcMsa8eXgbG2ZhVyFkRVrI4vT8haN39/QJc9 BrRh2nOTKgfMcT9h+1Xx0wNRQ9/SIGV1y3+3abNiJmJBWnJ8Bg== -----END CERTIFICATE REQUEST-----
ほとんどのCAはCSRでカット・ペーストをするサーバ認証のリクエスト処理があります。認証要求の詳細がCAが要求に適用した判定基準に一致することを確認した後で、CAは署名された証明書か、署名された証明書を取り出すことのできるURLをメールで送ります。
自分で署名する作業を行いたいなら(すなわち、全く役に立たないテスト証明書)、このように自分自身で生成することができます:
ssleay req -new -x509 -key key.pem -out dummy.pem
SSLeay-0.5.xでは、自分自身の認証局として動作するcaプログラムが始めてサポートされました。
私は使いやすいようにcaプログラムをスクリプトにまとめました。これはSSLeayのリリースにapps/CA.shとして含まれています。
CA.sh -newca ... はcaを使うための準備をします CA.sh -newreq ... は認証要求を生成します CA.sh -sign ... は生成された署名要求に署名し、証明書を出力します
caそのものに関するドキュメントは非常に少ないですが、いくつか基本的なことをここに書いておきます:
caプログラムは、ほとんどの設定にssleay.confファイルを使います。 あなたは、このファイルを読んであなたの要求にあうようにカスタマイズしたいと思うでしょう。
標準的な短い使用法を見るにはca -helpを使ってください。 以下の文章にはもっと情報が含まれています。まだ完全ではありませんが、試してみようと思うには十分な情報があります。
caは、署名要求のフィールドの順番や、どの属性が書かれた時にどのフィールドが必須かを定義するポリシーの概念をサポートしています。
それそれのpolicyのオプションはコンフィギュレーションファイルのsectionsに保存されます(デフォルトのコンフィギュレーションファイルはssleay.confです)。
コンフィギュレーションファイルのセクションは、"普通の"Windows INIファイルの、値を持つ変数のnamed listの概念と基本的に同じです。
[section name] variable1=value variable2=value
Configファイルの中でパラメータとして使われるセクション。 これによって一つのファイルで複数の設定ができます。 デフォルトでは、default_ca変数が[ ca ]セクションの中で参照されます。 従って、配布されたssleay.confの中では、CA_defaultがCA定義として使われます。 これは他のどのような名前でもかまいません。
これは新しい証明書無効リスト(certificate revocation list: 訳注)を生成します。
証明書を認証する際、これが証明書の有効期限 - すなわち、現時点から証明書が無効になるまでの日数 - になります。
これらについては後述します。 デフォルトのssleay.confコンフィギュレーションファイルには、二つのポリシーが定義されています。
CAのRSA鍵は必ず暗号化されていることが要請されます!
-out オプションは得られる全ての認証された証明書を一つのファイルにまとめます。 -outdir オプションはこれらに通し番号で名前をつけてディレクトリーにいれます。
ほとんどのパラメータはコンフィギュレーションファイルssleay.confに定義されているデフォルト値を持ちます(もちろん標準的なデフォルト値はreasonableなものです :-)。SSLeay-0.6.3+では、MS-DOSでも扱いやすいようにコンフィギュレーションファイルの名前をssleay.cnfに変えていることに注意してください。
ほとんどのオプションに対する標準的なデフォルト値は、ssleay.confのCA_defaultセクションで設定されています。
| 名前 | 説明 |
| dir | 全てのCAデータベースが保存されている場所。 |
| certs | 既に発行された全ての証明書が保存されている場所。 |
| database file | 発行された証明書の状態(status)が記録されているテキストデータベース。 |
| policy | デフォルトのポリシー名。 |
ポリシーのセクションは、認証を受けるそれぞれの"objects"に対する要請を:
policy_matchのデフォルト値は
countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional
policyセクションにおける"objects"の順番は、証明書を生成する際の順番を同じです。
status: 'R'(revoked), 'E'(expired)または'V'(valid)のいずれかの値。 expiry date: 証明書が認証された日時。 revoked date: 無効になった日時。無効になっていない場合は空白。 serial number: 証明書の通し番号(serial number)。 certificate: 証明の場所(Where the certificate is located)。 CN: 証明の名前(The name of the certificate)
現時点では、caプログラムは'certificate'ファイルを正しく更新しません。 CN/statusの組合せが正しくなければならないので、serialの項目(field)はuniqueでなければなりません(The serial field should be unique as should the CN/status combination be correct.)。 caプログラムはこれらを立ち上げ時に確認します。 まだ、発行された証明書のリスト(とCRLリスト)から、データベースファイルを再生成するプログラムを書く必要かあります。
Personaの署名要求がどのように動作するかを考えると、これはpolicy_matchポリシーに似ており、policy_anythingはVerisignがやっていることに似ています。
もちろん最も簡単なのは認証局のリストにある商用のCAの一つを使うことです。 リストに挙げられているCAはそれぞれのポリシー(と価格)でサービスを提供しています。 いくつかのCAは、あなた自身のCAになるために必要な詳細な情報を含むパッケージを売っています。
何人かの人がNetscape NavigatorとMicrosoft Internet Explorerでどのようにクライアント証明書が発行されるのかを説明するために、ウェブベースの環境をまとめています。テストのためか、あるいはもし望むなら自身の会社内部のCAを構築する基礎として、これを使うことができます。
会社内部で使う商用サポートされたCAが欲しいなら、以下はあなたが取るべき方法ではありません。製品についてはCAベンダーに話すべきです。
Holger(Holger.Reif@PrakInf.TU-Ilmenau.DE)はMSIEクライアント証明書の発行するためにやらなくてはならないことを、sedとawkにとともに一連のシェルスクリプトにまとめました。Holgerは、GenerateKeyPair()の8つのパラメータが0でなく1でなければならないことをも教えてくれました。これはドキュメントに明確に書かれていませんでした。
私は、NSNAVとMSIEの両方にzero value certificateを発行するテストサーバを走らせています。これは標準のSSLeayツールを使っており、テスト用の証明書を直ちに発行するための、1200行からなる一つのPerlスクリプトです。
もしこのコードをお望みの場合には、tjh@cryptsoft.comまでメールを下さい。あなたにこれを送ります。
Clifford(cjh@osa.com.au)は証明書署名要求を受け取り、認証要求(authorisation rquests)を指定されたアドレスにemailで送るCAをまとめました。これによって署名要求を認証し、証明書をダウンロードするためにどこに接続したらいいかをemailによってユーザに知らせます。Cliffordはこれに一連のシェルスクリプト、sed、awkを用いています。
Simon (sjg@quick.com.au)はCA操作のスクリプトをここに持っています:
CAにメールで送信された要求を生成するためのウェブインターフェースをハンドルしているperlスクリプトです。CAの最後のスクリプトがssleayのcaと、ユーザに戻ってくるメールを介して署名をハンドルします。
役立つ追加情報はここです。
SSLeayの標準PEMスタイルのエンコーディングを使わないパッケージからの、鍵を読み出しと読み込みはほぼ不可能です。Nagivator 4.04とInternet Explorer 4.0以前には読み出しの機能がありませんでした。
最新の方法はPKCS#12を使うことです。詳細はこのFAQにあり、Dr Stephen Henson (shenson@bigfoot.com)からソフトを入手することができます:
もしSSLeayで問題が生じたら、以下のステップを踏んで下さい:
バグを報告する場合には、全てのバグレポートに以下の情報をいれておいて下さい: (これをbug submission formにすべきかもしれません)
SSLeay Details
- Version
Operating System Details
- OS Name
- OS Version
- Hardware platform
Compiler Details
- Name
- Version
Application Details
- Name
- Version
Problem Description
- include steps that will reproduce the problem (if known)
Stack Traceback (if the application dumps core)
For example:
SSLeay-0.5.1a SunOS 5.3, SPARC, SunC 3.0 SSLtelnet-0.7 以下のスタック・トラックバックにあるbn_mul()のSSLサポートでtelnetを使うときにコアをダンプします ...
ssleay@cryptsoft.com (Eric and Tim)または、ssl-bugs@lists.cryptsoft.com (mailing list of active developers)にバグを報告して下さい。
以下は共通の"問題"に対する有用な解決法です。
鍵からパスフレーズを取り除くには、以下のコマンドを使うだけです:
あなたはパスフレーズを入力するよう要求され、出力ファイルは暗号化されていないでしょう(暗号化オプション-des/-des3/-ideaを付けなかった場合のように)。
主な変更内容についてはftp://ftp.psy.uq.oz.au/pub/Crypto/SSLapps/PORT4-5を見て下さい。
Netscapeは現在以下の暗号セットを実装しています: (current at 12-Mar-97)
もしテキスト形式ではないemailを送る場合には、以下がtjh@cryptsoft.comのPGP鍵です(鍵のサイズが小さいことはわかっています)。
Type Bits/KeyID Date User ID pub 512/4D799671 1997/02/20 Tim Hudson <tjh@cryptsoft.com> -----BEGIN PGP PUBLIC KEY BLOCK----- Version: 2.6.3ia mQBNAjMMyzgAAAECAOZEuKvH4qzwgA0nzFlqGmFTrNoqpSsXAoldy9kSfjFYBfg2 SVFar9GTMUpgTZqXStyvDezce8b1BqZXPE15lnEABRG0HlRpbSBIdWRzb24gPHRq aEBjcnlwdHNvZnQuY29tPokAVQIFEDMMyzkGplc8TXmWcQEBaUYB/0iDS6thkxqn wXAqQrsxhFAS7u1ASn681gXieam853lfvpmzQ0e5HR1exITD3SbT2t3FveU5UB4Q 96gqA+tXJVk= =4FmU -----END PGP PUBLIC KEY BLOCK-----
| -z ssl | SSLモードのみを用いる; 他のものとはネゴシエートを試みない |
| -z secure | (ftp, ftpd, telnet, telnetd)は、SSL-handshakeが失敗した時にnonsecure modeにならない |
| -z verify=level |
|
| -z cert=certfile | (デフォルト <appname>.pem) 他の証明書ファイルを見に行く |
| -z key=keyfile | (デフォルト <appname>.pem) 他のRSA秘密鍵を見に行く |
| -z certsok | (サーバーのみ) クライアントの証明書を確認し、さらにOneline versionの確認をし、それが/etc/ssl.usersのエントリーと一致すれば、"通常の"ユーザー名とパスワードのかわりにそれを認証として使う |
| -z cipher | どの暗号を使うか; (環境変数SSL_CIPHERでも設定できる) |
| SSL_CERT_DIR | 証明書ファイルがあるディレクトリー |
| SSL_CERT_FILE | 証明書が入っているファイル |
| SSL_CIPHER | どの暗号を使うか |
以下のリストは、私が知っているSSLeay対応のフリーウェア/シェアウェアなどのソフトです。 これらは我々が見つけた順にならんでいるだけで、いろいろなパッケージのどれがいいかという我々の意見ではありません。
Simon J. Gerraty(sjg@zen.quick.com.au)はssl_rcmd()というSSLeay版のrcmd()を実装しました。これは.rhostsのかわりにX509を認証に使っています。
このパッケージにはSSLrsh, SSLrshd, SSLrcp, SSLrdist が含まれています。
Ben Laurie (ben@algroup.co.uk)は、SSLeayを使ってApacheにSSLをサポートするためのパッチに関する詳細は:
Mozilla Crypto Group (mcg@ssleay.org)はCryptozillaを作るためにNetscape Mozillaソースに暗号化を組み込みました。
Max Masyutin (max@ritlabs.com)はSSLeayを使ったSSLをサポートするWin32のTinyWebサーバ(written in Delphi)の作者です。
以下が、私が知っているSSLeayを用いた商用ソフトのリストです。 これらは我々が見つけた順にならんでいるだけで、いろいろなパッケージのどれがいいかという我々の意見ではありません。
もしあなたの製品をこのリストに追加したければ、あなたが付け加えたい簡単な説明をつけてtjh@cryptsoft.comにemailで連絡してください。
十分強い(full-strength)暗号が世界中で使えるStrongHold (元はApache-SSL-USとして知られていた)が商用および非商用で入手できます。 米国用はCommunity ConneXionhttp://stronghold.c2.net、国際用はUK Webhttp://stronghold.ukweb.comによって開発されました。
注: C2Netは米国内でのRSAアルゴリズムの商用利用に関して、RSAからのライセンスを持っています。
RoxenはSSLeayを使っています。詳細はhttp://www.roxen.comで入手できます。
iNETstoreは、SSLが使えるウェブブラウザーを含む、特殊なオンラインショップとカタログ構築システムです。詳細はhttp://www.smi.com.au/~cb2000/です。
私はまだMicrosoft WindowsやUnix用のSSLeayベースの商用ブラウザーを知りません ... たぶんNetscapeとMicrosoftが彼のマーケットをとってしまったのでしょう。
Voyager Amigaウェブブラウザーは、現在SSLeay 0.6.6をサポートしています。SSLモジュールはRC4、IDEA、DESの十分な強い暗号をサポートしています。最新版はSSLeayをサポートしており、http://www.vapor.com/voyager/から入手できます。
WebブラウザーでもWebサーバーでもないものです。
Safe PassageはproxyサーバーのようにあなたのブラウザーとWebを透過的に仲介する十分な強さの(full-strength)暗号化を行うWeb proxyです。
さらに詳しいことはhttp://stronghold.ukweb.com/safepassageを見て下さい。
SSLeayベースのsecure socket relayをCelocomから評価用にダウンロードでき、非商用ならばフリーです。
PersonalSecure Web Proxyは、輸出版のブラウザーに代わって強い暗号のSSL接続を確立する、Windows 95/Windows 3.1ベースの小さなmiddleware製品です。 現在はNetscape NavigatorとInternet Explorerに対応しています。
http://www.security.is.co.za/Pages/HTTPPersonalSecure.htm
以下が、私が知っているSSLeayを使ったフリーウェア/シェアウェア/等のライブラリーのリストです。
Tage Stabell-Kuloe (tage@ACM.org)はPGPを走らせずにPGPのパケットを扱うためのライブラリーを持っています。
Tageはこのライブラリーを使ったPGP鍵サーバーも動かしています:
私たちは、SSLeayに関するコンサルティングができるのは誰かという質問を非常に多く尋ねられます。 私たちは推薦できる知識を持った人のリストを持っており、もしあなたがこの分野に興味を持っているならばtjh@cryptsoft.comにemailで知らせて下さい。
日本国内ではインフォサイエンス(株)がSSLeayによるアプリケーション開発とコンサルティングを行なっているので、 ssleay@infoscience.co.jp 宛に連絡をください。