オープン‐エスエスエル【OpenSSL】
読み方:おーぷんえすえすえる
《open secure socket layer》SSLとTLSを組み合わせたオープンソースソフトウエアの一。さまざまなプログラミング言語やオペレーティングシステムに対応し、オンラインショッピングやインターネットバンキングにおいて、暗証番号やクレジットカード番号の暗号化などに用いられる。
OpenSSL
SSL(Secure Sockets Layer)プロトコルのオープンソース実装。SSLだけでなくTLS(Transport Layer Protocol)もサポートする。OpenSSLプロジェクトが開発、配布している。
OpenSSLはSSLライブラリ、暗号化ライブラリ、コマンドラインツールから構成される。コマンドラインツールを使って鍵の生成、証明書の発行と管理などをおこなうことができる。
関連URL
OpenSSL(http://www.openssl.org/)
OpenSSL 関数
導入
このモジュールは、署名の生成および認証、そして、データのシール (暗号化)およびオープン(復号化)を行うために、 » OpenSSL の関数を使用します。 OpenSSL は多くの機能を提供しますが、これらはまだこのモジュールでは サポートされていません。これらのいくつかは将来的に追加される可能性が あります。要件
OpenSSL 関数を使用するためには、» OpenSSL パッケージがインストール されていることを要します。 PHP のバージョン 4.0.5 から 4.3.1 までは、OpenSSL >= 0.9.5 で動作します。他のバージョン(PHP <=4.0.4 および >= 4.3.2) では OpenSSL >= 0.9.6 を必要とします。警告 |
最新のバージョンの OpenSSL を使用するようにしてください。 さもないと、Web サーバへの攻撃に対しての脆弱性をかかえてしまいます。 |
インストール手順
PHP の OpenSSL サポートを使用するには、--with-openssl[=DIR] を指定して PHP を コンパイルする必要があります。Win32 ユーザへの注意: このモジュールを Windows 環境で使用するには、libeay32.dllを PHP/Win32 バイナリパッケージの DLL フォルダから使用する Windows マシンの SYSTEM32 フォルダ(例: C:\WINNT\SYSTEM32 または C:\WINDOWS\SYSTEM32 )にコピーする必要があります。
加えてキー生成およびサイン認証関数を使用する計画がある場合、 システムに 有効な openssl.cnf をインストールする 必要があります。PHP 4.3.0 以降、Win32 バイナリ配布版の openssl フォルダに サンプル設定ファイルが含まれています。 PHP 4.2.0 以降を使用しておりこのファイルがない場合、 » OpenSSLのホームページから入手するか PHP 4.3.0 のリリース版をダウンロードし、それらに含まれる 設定ファイルを使用することができます。
PHP は、 以下のロジックにより openssl.cnf を探します。
- 環境変数 OPENSSL_CONF が設定された場合、 設定ファイルの(ファイル名を含む)パスとして使用されます。
- 環境変数 SSLEAY_CONF が設定された場合、 設定ファイルの(ファイル名を含む)パスとして使用されます。
- ファイル openssl.cnf はデフォルトの認証エリアに あることが仮定され、openssl DLL がコンパイルされた時間で設定されます。 通常、デフォルトのファイル名が c:\usr\local\ssl\openssl.cnf であることを 意味します。
インストール時に、設定ファイルを c:\usr\local\ssl\openssl.cnf または 他の場所にインストールし、(例えば仮想ホスト毎に)環境変数に設定ファ イルの場所を指定するかを選ぶ必要があります。 設定ファイルを必要とする関数の configargs に より、デフォルトのパスを上書きすることが可能であることに注意してください。
実行時設定
設定ディレクティブは定義されていません。リソース型
キー/証明書パラメータ
OpenSSL 関数のうち、キーまたは証明書パラメータを必要とするものは ごく一部です。PHP 4.0.5 より以前では、openssl_get_xxx 関数により り返されたキーまたは証明書リソースを使用する必要がありました。 これより後のバージョンでは、次の方法のどれかを使用することが 可能となる予定です。- 証明書
- openssl_x509_read() から返された X.509 リソース。
- file://path/to/cert.pem 形式の文字列。 このファイルは、PEM エンコードされた証明書である必要があります。
- PEMエンコードされた証明書の内容を含む文字列。
- 公開鍵/秘密鍵
- openssl_get_publickey() あるいは openssl_get_privatekey() から返された キーリソース。
- 公開鍵のみ: X.509リソース。
- file://path/to/file.pem 形式の文字列。- このファイルは、PEM エンコードされた証明書/秘密鍵である 必要があります(両方を含むことも可能です)。
- PEM エンコードされた証明書/キーの内容を含む文字列
- 秘密鍵については array($key, $passphrase) という構文を使用することも可能です。 ただし、$key は file:// または上記のテキスト表現形式を使用 して指定したキー、$passphrase はその秘密鍵に関するパスワードを 有する文字列を表します。
証明書の認証
サイン/証明書を認証する関数をコールする際、 cainfo パラメータは、ファイルと認証済みの CA ファイルの場所を指定するファイルディレクトリ名を含む配列です。 ディレクトリが指定された場合、openssl コマンドが 使用できるような正しい形式にハッシュされたディレクトリである必要が あります。定義済み定数
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。目的を調べるフラグ
- X509_PURPOSE_SSL_CLIENT (integer)
- X509_PURPOSE_SSL_SERVER (integer)
- X509_PURPOSE_NS_SSL_SERVER (integer)
- X509_PURPOSE_SMIME_SIGN (integer)
- X509_PURPOSE_SMIME_ENCRYPT (integer)
- X509_PURPOSE_CRL_SIGN (integer)
- X509_PURPOSE_ANY (integer)
パディングフラグ
- OPENSSL_PKCS1_PADDING (integer)
- OPENSSL_SSLV23_PADDING (integer)
- OPENSSL_NO_PADDING (integer)
- OPENSSL_PKCS1_OAEP_PADDING (integer)
キーの型
PKCS7 フラグ/定数
S/MIME 関数はビットフィールドを使用して指定したフラグを使用します。 このビットフィールドには、以下の値を一つ以上含むことが可能です。 表 224. PKCS7 定数定数 | 説明 |
---|---|
PKCS7_TEXT | text/plain content type ヘッダを暗号化/署名されたメッセージに 追加します。復号化または認証を行う際には、このヘッダは出力から 取り除かれます。復号化または認証されたメッセージがMIME 型 text/plain でない場合、エラーとなります。 |
PKCS7_BINARY | 通常は、入力されたメッセージは CR および LF を行端として使用した 「正規化」された形式に変換されます。こらは、S/MIME の規格に 基づくものです。このオプションが指定された場合、変換は行われません。 この機能は、MIME 形式でないバイナリデータを処理する際に 便利です。 |
PKCS7_NOINTERN | メッセージを認証する際に、通常、メッセージに含まれる証明書が 証明書にサインする際に検索されます。 このオプションでは、 openssl_pkcs7_verify() の extracerts パラメータで指定した証明書 のみが使用されます。しかし、指定された証明書を信頼されていな い CA として使用することも可能です。 |
PKCS7_NOVERIFY | サインつきメッセージをサインした証明書の署名について 検証しません。 |
PKCS7_NOCHAIN | サインを行った側の証明書の認証の連鎖を行いません。 この場合、サイン付きのメッセージにある証明書を未認証の CA として使用しません。 |
PKCS7_NOCERTS | メッセージにサインする際、通常はサインをする人の証明書が挿入 されますが、このオプションを指定した場合はそうなりません。これに よりサイン付きのメッセージのサイズは小さくなりますが、認証 側が(例えば、openssl_pkcs7_verify() の extracerts を用いて渡すことにより) サインをした人の証明書のコピーをローカルに用意する必要があります。 |
PKCS7_NOATTR | 通常、メッセージがサインされる時、サインした時間やサポートされる 対象アルゴリズムを含む一連の属性が付加されます。このオプションを 指定した場合、それらの属性は付加されません。 |
PKCS7_DETACHED | メッセージにサインをする際、MIME型 multipart/signed を指定して クリアテキストでサインを行います。これは、 openssl_pkcs7_sign() において フラグを指定しなかった場合の flags パラメータのデフォルトです。このオプションをオフにした場合、 メッセージは不透明なサインによりサインされます。これは、 メールリレイによる変換に対してより耐性がありますが、S/MIME を サポートしないメールエージェントでは読むことはできません。 |
PKCS7_NOSIGS | メッセージにサインや認証を試みません。 |
注意: これらの定数は、4.0.6 で追加されました。
署名アルゴリズム
- OPENSSL_ALGO_SHA1 (integer)
- openssl_sign() および openssl_verify() のデフォルトアルゴリズムとして用いられます。
- OPENSSL_ALGO_MD5 (integer)
- OPENSSL_ALGO_MD4 (integer)
- OPENSSL_ALGO_MD2 (integer)
暗号化方式
- OPENSSL_CIPHER_RC2_40 (integer)
- OPENSSL_CIPHER_RC2_128 (integer)
- OPENSSL_CIPHER_RC2_64 (integer)
- OPENSSL_CIPHER_DES (integer)
- OPENSSL_CIPHER_3DES (integer)
バージョン定数
注意: これらの定数は、5.2.0 で追加されました。目次
- openssl_csr_export_to_file — CSR をファイルにエクスポートする
- openssl_csr_export — CSR を文字列としてエクスポートする
- openssl_csr_get_public_key — CERT の公開鍵を返す
- openssl_csr_get_subject — CERT の subject を返す
- openssl_csr_new — CSR を作成する
- openssl_csr_sign — 他の CERT(あるいは自分自身)で証明書をサインする
- openssl_error_string — OpenSSL エラーメッセージを返す
- openssl_free_key — キーリソースを開放する
- openssl_get_privatekey — openssl_pkey_get_private() のエイリアス
- openssl_get_publickey — openssl_pkey_get_public() のエイリアス
- openssl_open — シール(暗号化)されたデータをオープン(復号)する
- openssl_pkcs7_decrypt — S/MIME 暗号化されたメッセージを復号化する
- openssl_pkcs7_encrypt — S/MIME メッセージを暗号化する
- openssl_pkcs7_sign — S/MIME メッセージにサインする
- openssl_pkcs7_verify — S/MIME でサインされたメッセージの署名を検証する
- openssl_pkey_export_to_file — エクスポート可能な形式で、キーをファイルに取得する
- openssl_pkey_export — エクスポート可能な形式で、キーを文字列に取得する
- openssl_pkey_free — 秘密鍵を開放する
- openssl_pkey_get_details — キーの詳細 (bits, pkey, type) の配列を返す
- openssl_pkey_get_private — 秘密鍵を取得する
- openssl_pkey_get_public — 証明書から公開鍵を抽出し、使用できるようにする
- openssl_pkey_new — 新規に秘密鍵を生成する
- openssl_private_decrypt — 秘密鍵でデータを復号化する
- openssl_private_encrypt — 秘密鍵でデータを暗号化する
- openssl_public_decrypt — 公開鍵でデータを復号化する
- openssl_public_encrypt — 公開鍵でデータを暗号化する
- openssl_seal — データをシール(暗号化)する
- openssl_sign — 署名を生成する
- openssl_verify — 署名を検証する
- openssl_x509_check_private_key — 秘密鍵が証明書に対応するかを確認する
- openssl_x509_checkpurpose — 証明書が特定の目的に使用可能かどうか確認する
- openssl_x509_export_to_file — 証明書をファイルにエクスポートする
- openssl_x509_export — 証明書を文字列としてエクスポートする
- openssl_x509_free — 証明書リソースを開放する
- openssl_x509_parse — X509 証明書をパースし、配列として情報を返す
- openssl_x509_read — Parse an X.509 証明書をパースし、リソースIDを返す
OpenSSL
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/06/06 09:08 UTC 版)
OpenSSL(オープン・エスエスエル)は、TLSプロトコル・SSLプロトコルの、オープンソースで開発・提供されるソフトウェアである。中心となっているライブラリ(C言語で書かれている)は基本的な暗号化関数と様々なユーティリティ関数を実装している。様々なコンピュータ言語でOpenSSLライブラリを利用できるようにするラッパーもある。OpenSSLはEric A. YoungとTim HudsonによるSSLeay(1998年12月に開発者がRSA Securityに異動したため開発は終了されている)を基にしている。
- ^ “OpenSSL: Newslog”. 2024年6月6日閲覧。
- ^ a b c Matt Caswell (2018年11月28日). “The Holy Hand Grenade of Antioch”. OpenSSL Foundation, Inc. 2019年1月3日閲覧。
- ^ a b c Richard Levitte (2018年12月6日). “Change license to the Apache License v2.0 openssl/LICENSE at master · openssl/openssl · GitHub”. OpenSSL Foundation, Inc. 2019年1月3日閲覧。
- ^ a b c 樽井 秀人 (2018年11月30日). “「OpenSSL」のバージョンの付け方が変更 ~ライセンスは“Apache License 2.0”へ 現行バージョンはそのまま、v3.0.0から実施”. Impress Corporation. 2019年1月3日閲覧。
- ^ “Changelog”. OpenSSL Software Foundation. 2019年10月7日閲覧。
- ^ a b c “Release Strategy”. OpenSSL Software Foundation. 2023年3月18日閲覧。
- ^ a b Mark J Cox (2016年1月25日). “(openssl-announce) Forthcoming OpenSSL releases” (英語). The OpenSSL Project Team. 2016年12月7日閲覧。 “support for 1.0.0 and 0.9.8 releases ended on 31st December 2015 and are no longer receiving security updates”
- ^ “OpenSSL 1.0.1 Series Release Notes”. 2015年1月20日時点のオリジナルよりアーカイブ。2017年2月20日閲覧。
- ^ “OpenSSL 1.0.2 Series Release Notes”. 2017年2月20日閲覧。
- ^ “OpenSSL 1.1.0 Series Release Notes”. 2017年2月20日閲覧。
- ^ a b Caswell, Matt (2018年9月11日). “OpenSSL 1.1.1 Is Released” (英語). www.openssl.org. OpenSSL Foundation. 2019年10月7日閲覧。
- ^ Caswell, Matt (2018年2月8日). “Using TLS1.3 With OpenSSL - OpenSSL Blog” (英語). www.openssl.org. OpenSSL Foundation. 2019年10月7日閲覧。
- ^ Caswell, Matt (2018年11月28日). “The Holy Hand Grenade of Antioch”. OpenSSL Blog. 2019年10月7日閲覧。
- ^ “OpenSSL 3.1 Final Release” (英語). OpenSSL Foundation. 2023年6月3日閲覧。
- ^ “OpenSSL Announces Final Release of OpenSSL 3.2.0” (英語). OpenSSL Foundation. 2023年11月25日閲覧。
- ^ “OpenSSL 3.3 Final Release Live” (英語). OpenSSL Foundation. 2024年6月6日閲覧。
- ^ “OpenSSL (libssl libcrypto) の version を 1.1未満(1.0.2以前) から 1.1 以降に変更する方法や注意点など”. openssl-migration. 2021年5月21日閲覧。
- ^ a b c “GOST engine OpenSSL 1.0.0 README”. cvs.openssl.org. 2013年4月15日時点のオリジナルよりアーカイブ。2019年10月7日閲覧。
- ^ “OpenSSL source code, directory crypto/whrlpool”. 2017年8月29日閲覧。
- ^ “FIPS-140 - OpenSSL.org” (2017年3月14日). 2019年11月12日閲覧。
- ^ “OpenSSL User Guide for the OpenSSL FIPS Object Module v2.0” (2017年3月14日). 2019年11月12日閲覧。
- ^ NIST recertifies open source encryption module
- ^ “Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules 2007”. アメリカ国立標準技術研究所 (2007年). 2013年6月24日閲覧。
- ^ “FIPS 140-2 Validation Certificate” (PDF). アメリカ国立標準技術研究所 (2007年). 2013年6月24日閲覧。
- ^ OpenSSL: Source, License
- ^ http://www.openssl.org
- ^ Licenses - Free Software Foundation
- ^ OpenSSL: Frequently Asked Questions
- ^ WGET 1.10.2 for Windows (win32)
- ^ climm - Download!
- ^ a b DebianのOpenSSLに脆弱性、「弱い鍵」が破られる恐れ @IT、2008年5月20日(2014年4月12日閲覧)。
- ^ a b “DSA-1571-1 openssl – predictable random number generator”. Debian (2008年5月13日). 2012年12月3日閲覧。
- ^ Seggelmann, R. et al. (2012年2月). “Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension”. RFC 6520. Internet Engineering Task Force (IETF). 2014年4月8日閲覧。
- ^ a b c OpenSSL.org (2014年4月7日). “OpenSSL Security Advisory [07 Apr 2014]”. 2014年4月9日閲覧。
- ^ [1]
- ^ a b Codenomicon Ltd (2014年4月8日). “Heartbleed Bug”. 2014年4月8日閲覧。
- ^ Goodin, Dan (2014年4月8日). “Critical crypto bug in OpenSSL opens two-thirds of the Web to eavesdropping”. Ars Technica. 2014年4月8日閲覧。
- ^ “Why Heartbleed is dangerous? Exploiting CVE-2014-0160”. IPSec.pl (2014年). 2014年4月8日閲覧。
- ^ Mutton, Paul (2014年4月8日). “Half a million widely trusted websites vulnerable to Heartbleed bug”. Netcraft Ltd.. 2014年4月8日閲覧。
- ^ “CCS Injection Vulnerability”. lepidum.co.jp (2014年6月6日). 2014年6月6日閲覧。
- ^ CCS Injection脆弱性(CVE-2014-0224)発見の経緯についての紹介 - CCS Injection
- ^ https://drownattack.com/drown-attack-paper.pdf DROWN: Breaking TLS using SSLv2
- ^ https://japan.cnet.com/article/35078777/ HTTPSサイトの3割に影響する「DROWN」脆弱性見つかる--OpenSSLはパッチ公開
- ^ “JVNVU#90617353:SSLv2 の暗号通信を解読可能な脆弱性 (DROWN 攻撃)”. Japan Vulnerability Notes (2016年3月2日). 2018年6月15日閲覧。
- ^ https://www.openssl.org/news/vulnerabilities.html#2016-0800 CVE-2016-0800 (OpenSSL advisory) [High severity] 1st March 2016
- ^ https://datatracker.ietf.org/doc/html/rfc6176
- ^ “OpenBSD has started a massive strip-down and cleanup of OpenSSL”. OpenBSD journal (2014年4月15日). 2014年6月22日閲覧。
- ^ “OpenBSD forks, prunes, fixes OpenSSL”. ZDNet (2014年4月21日). 2014年6月22日閲覧。
- ^ “Index of /pub/OpenBSD/LibreSSL” (2014年7月11日). 2014年7月11日閲覧。
- ^ Beck, Bob (2014年7月11日). “First release of LibreSSL portable is available”. Marc.info. 2014年7月11日閲覧。
- ^ “Google unveils independent “fork” of OpenSSL called “BoringSSL””. Ars Technica (2014年6月21日). 2014年6月21日閲覧。
- ^ “BoringSSL”. Adam Langley's Weblog (2014年6月20日). 2015年9月22日閲覧。
- 1 OpenSSLとは
- 2 OpenSSLの概要
- 3 FIPS 140-2の承認
- 4 フォーク
固有名詞の分類
- opensslのページへのリンク