OpensslコンパイルインストールconfigとConfigure
ダウンロードした圧縮パッケージを解凍し、解凍したディレクトリに入るとconfigまたはConfigureスクリプトを使用して構成できます.OpenSSLの構成スクリプトは、ほとんどの典型的なパッケージとは異なり、独自のルールがあります.詳細なインストール情報は、ソースツリーの下にあるINSTALL Configure(特に「PROCESS_ARGS」セグメント)Makefile.shared Makefile.orgファイルにあります.インストール後の使用と構成情報はdocディレクトリにあり、FAQファイルにも参考になります.
configスクリプトはシステム環境をチェックし、コンフィギュレーションを完了するためにConfigureを呼び出します.したがって、コンフィギュレーションオプションはconfigスクリプトを介してConfigureに渡されます.実際にconfigスクリプトの役割はconfig.guessに相当するので、configureを直接呼び出したい場合は必ず「オペレーティングシステム-ターゲットプラットフォーム」を正しく指定してください(筆者はこの使い方をお勧めします).使用可能なすべてのターゲットマシンのリストは、./Clonfigure LISTコマンドを使用して取得できます.Configureスクリプトには、Makefile.orgに基づいてMakefileを生成するほか、crypto/opensslconf.hに多くのマクロが定義されています(crypto/opensslconf.h.inベース).
configまたはConfigureコマンドラインでは、多くのオプションを使用できますが、大きく3つに分けることができます.
グローバル・オプション
第1クラスはグローバル・オプションです.
--openssldir=OPENSSLDIR
インストールディレクトリ、デフォルトは/usr/local/sslです.
--prefix=PREFIX
lib include binディレクトリのプレフィックスを設定し、デフォルトはOPENSSLDIRディレクトリです.
--install_prefix=DEstdIR
インストール時にこのディレクトリをルートディレクトリとして設定します.通常はパッケージに使用されますが、デフォルトは空です.
zlib
zlib-dynamic
no-zlib
静的zlib圧縮ライブラリを使用し、動的zlib圧縮ライブラリを使用し、zlib圧縮機能を使用しません.
threads
no-threads
マルチスレッドをサポートするライブラリをコンパイルするかどうか.デフォルトではサポートされています.
shared
no-shared
ダイナミック接続ライブラリを生成するかどうか.
asm
no-asm
コンパイル中にアセンブリコードを使用してコンパイルプロセスを高速化するかどうか.
enable-sse2
no-sse2
SSE 2命令セット加速を有効/無効にします.CPUがSSE 2命令セットをサポートしている場合は、開くことができます.そうしないと、閉じます.
gmp
no-gmp
GMPライブラリの有効化/無効化
rfc3779
no-rfc3779
X 509 v 3証明書を実現するIPアドレス拡張の有効化/無効化
krb5
no-krb5
Kerberos 5サポートの有効化/無効化
ssl
no-ssl
ssl2
ssl3
no-ssl2
no-ssl3
tls
no-tls
SSLの有効化/無効化(SSL 2/SSL 3を含む)TLSプロトコルサポート.
dso
no-dso
他のダイナミックリンクライブラリを呼び出す機能を有効/無効にします.[ヒント]no-dsoはno-sharedを前提としてのみ使用できます.
[ヒント]Apacheのmod_をインストールするためにsslは成功し,SSLv 2/SSLv 3/TLSはいずれもオンにしなければならない.
アルゴリズムオプション
第2のクラスはcryptoディレクトリの下の対応するサブディレクトリ(主に各種アルゴリズム)を無効にするために使用される.これらのサブディレクトリは、理論的には「no-*」構文で無効にできますが、実際にはlibcrypto,libssl,opensslを最小限に抑えるために、ほとんどのディレクトリを保持する必要があります.実際に選択できるディレクトリは次のとおりです.
no-md2,no-md4,no-mdc2,no-ripemd
これらは要約アルゴリズムであり,意味が一目瞭然である.
no-des,no-rc2,no-rc4,no-rc5,no-idea,no-bf,no-cast,no-camellia
これらは対称暗号化アルゴリズムであり,意味が一目瞭然である.「bf」は「Blowfish」という意味です.
no-ec,no-dsa,no-ecdsa,no-dh,no-ecdh
これらは非対称暗号化アルゴリズムであり,意味が一目瞭然である.
no-comp
データ圧縮アルゴリズム.現在、実際には圧縮アルゴリズムがないため、いくつかの空のインタフェースを定義しているだけです.
no-store
オブジェクトストレージ機能.詳細はcrypto/store/READMEファイルを参照してください.
[ヒント]OpenSSHはパッケージの暗号化ライブラリ(libcrypto)のみに依存し、HTTPSサポート付きApacheはパッケージの暗号化ライブラリとSSL/TLSライブラリ(libssl)に依存する.したがって、HTTPSを使用しない場合は、暗号化ライブラリ(no-ssl no-tls)のみをインストールできます.詳細については、READMEファイルの「OVErVIEW」セクションを参照してください.実際,OpenSSHのインストールを成功させるためには,ripemd,des,rc 4,bf,cast,dsa,dhディレクトリは禁止できない.
コンパイラオプション
3つ目はコンパイラオプションです.ほとんどのパッケージはconfigureスクリプトを実行するときにCPPFLAGS CFLAGS LDFLAGS環境変数を定義することでコンパイルオプションを設定しますが、OpenSSLはそうではありません.OpenSSLのConfigureスクリプトを使用すると、コマンドラインにCPPFLAGS CFLAGSの内容を直接入力できます.たとえば、-DEVRANDOM='"/dev/urandom"'は、ランダムデバイス、-DSSL_を指定するために使用できます.FORBID_ENULLはNULL暗号化アルゴリズムの使用を禁止するために使用することができる.`echo$CFLAGS`はCFLAGS変数を追加できます.一方、LDFLAGSはコンフィギュレーションでは設定できません.コンフィギュレーションは、MakefileのLDFLAGSを強制的に空にするので、コンフィギュレーションを実行した後、すべてのMatkefileのLDFLAGS(openssl接続用)とSHARED_を1つのsedで変更できます.LDFLAGS(libcrypto,libsslライブラリに接続するためのもの).
たとえば筆者は、コンフィギュレーションをよく使います.
configスクリプトはシステム環境をチェックし、コンフィギュレーションを完了するためにConfigureを呼び出します.したがって、コンフィギュレーションオプションはconfigスクリプトを介してConfigureに渡されます.実際にconfigスクリプトの役割はconfig.guessに相当するので、configureを直接呼び出したい場合は必ず「オペレーティングシステム-ターゲットプラットフォーム」を正しく指定してください(筆者はこの使い方をお勧めします).使用可能なすべてのターゲットマシンのリストは、./Clonfigure LISTコマンドを使用して取得できます.Configureスクリプトには、Makefile.orgに基づいてMakefileを生成するほか、crypto/opensslconf.hに多くのマクロが定義されています(crypto/opensslconf.h.inベース).
configまたはConfigureコマンドラインでは、多くのオプションを使用できますが、大きく3つに分けることができます.
グローバル・オプション
第1クラスはグローバル・オプションです.
--openssldir=OPENSSLDIR
インストールディレクトリ、デフォルトは/usr/local/sslです.
--prefix=PREFIX
lib include binディレクトリのプレフィックスを設定し、デフォルトはOPENSSLDIRディレクトリです.
--install_prefix=DEstdIR
インストール時にこのディレクトリをルートディレクトリとして設定します.通常はパッケージに使用されますが、デフォルトは空です.
zlib
zlib-dynamic
no-zlib
静的zlib圧縮ライブラリを使用し、動的zlib圧縮ライブラリを使用し、zlib圧縮機能を使用しません.
threads
no-threads
マルチスレッドをサポートするライブラリをコンパイルするかどうか.デフォルトではサポートされています.
shared
no-shared
ダイナミック接続ライブラリを生成するかどうか.
asm
no-asm
コンパイル中にアセンブリコードを使用してコンパイルプロセスを高速化するかどうか.
enable-sse2
no-sse2
SSE 2命令セット加速を有効/無効にします.CPUがSSE 2命令セットをサポートしている場合は、開くことができます.そうしないと、閉じます.
gmp
no-gmp
GMPライブラリの有効化/無効化
rfc3779
no-rfc3779
X 509 v 3証明書を実現するIPアドレス拡張の有効化/無効化
krb5
no-krb5
Kerberos 5サポートの有効化/無効化
ssl
no-ssl
ssl2
ssl3
no-ssl2
no-ssl3
tls
no-tls
SSLの有効化/無効化(SSL 2/SSL 3を含む)TLSプロトコルサポート.
dso
no-dso
他のダイナミックリンクライブラリを呼び出す機能を有効/無効にします.[ヒント]no-dsoはno-sharedを前提としてのみ使用できます.
[ヒント]Apacheのmod_をインストールするためにsslは成功し,SSLv 2/SSLv 3/TLSはいずれもオンにしなければならない.
アルゴリズムオプション
第2のクラスはcryptoディレクトリの下の対応するサブディレクトリ(主に各種アルゴリズム)を無効にするために使用される.これらのサブディレクトリは、理論的には「no-*」構文で無効にできますが、実際にはlibcrypto,libssl,opensslを最小限に抑えるために、ほとんどのディレクトリを保持する必要があります.実際に選択できるディレクトリは次のとおりです.
no-md2,no-md4,no-mdc2,no-ripemd
これらは要約アルゴリズムであり,意味が一目瞭然である.
no-des,no-rc2,no-rc4,no-rc5,no-idea,no-bf,no-cast,no-camellia
これらは対称暗号化アルゴリズムであり,意味が一目瞭然である.「bf」は「Blowfish」という意味です.
no-ec,no-dsa,no-ecdsa,no-dh,no-ecdh
これらは非対称暗号化アルゴリズムであり,意味が一目瞭然である.
no-comp
データ圧縮アルゴリズム.現在、実際には圧縮アルゴリズムがないため、いくつかの空のインタフェースを定義しているだけです.
no-store
オブジェクトストレージ機能.詳細はcrypto/store/READMEファイルを参照してください.
[ヒント]OpenSSHはパッケージの暗号化ライブラリ(libcrypto)のみに依存し、HTTPSサポート付きApacheはパッケージの暗号化ライブラリとSSL/TLSライブラリ(libssl)に依存する.したがって、HTTPSを使用しない場合は、暗号化ライブラリ(no-ssl no-tls)のみをインストールできます.詳細については、READMEファイルの「OVErVIEW」セクションを参照してください.実際,OpenSSHのインストールを成功させるためには,ripemd,des,rc 4,bf,cast,dsa,dhディレクトリは禁止できない.
コンパイラオプション
3つ目はコンパイラオプションです.ほとんどのパッケージはconfigureスクリプトを実行するときにCPPFLAGS CFLAGS LDFLAGS環境変数を定義することでコンパイルオプションを設定しますが、OpenSSLはそうではありません.OpenSSLのConfigureスクリプトを使用すると、コマンドラインにCPPFLAGS CFLAGSの内容を直接入力できます.たとえば、-DEVRANDOM='"/dev/urandom"'は、ランダムデバイス、-DSSL_を指定するために使用できます.FORBID_ENULLはNULL暗号化アルゴリズムの使用を禁止するために使用することができる.`echo$CFLAGS`はCFLAGS変数を追加できます.一方、LDFLAGSはコンフィギュレーションでは設定できません.コンフィギュレーションは、MakefileのLDFLAGSを強制的に空にするので、コンフィギュレーションを実行した後、すべてのMatkefileのLDFLAGS(openssl接続用)とSHARED_を1つのsedで変更できます.LDFLAGS(libcrypto,libsslライブラリに接続するためのもの).
たとえば筆者は、コンフィギュレーションをよく使います.
./Configure ... -DSSL_FORBID_ENULL -DDEVRANDOM='"/dev/urandom"' `echo $CFLAGS`
find . -name "Makefile*" -exec sed -r -i -e"s|^(SHARED_)?LDFLAGS=|& $LDFLAGS |" {} \;
[プロンプト]findコマンド内の「Makefile*」の両方の引用符は省略できません.