11

プロジェクトで libcrypto.a (OpenSSL) を使用しています。デフォルトでは、すべてのアルゴリズムが libcrypto.a で利用可能です。このプロジェクトでは、RSA、AES、および SHA だけが必要です。

これらのアルゴリズムだけで libcrypto.a をビルドするにはどうすればよいですか?

4

1 に答える 1

18

configまたはConfigureスクリプトを実行して OpenSSL を構築する場合はno-<cipher>、暗号を除外する引数として指定します。オプションなしで実行Configureすると、利用可能なビルド オプションが表示されます。

構成スクリプトは、これらの引数をプリプロセッサのオプションに変換します。コンパイル時に無効にできるほぼすべてのリストを次に示します。最初は構成スクリプト引数で、次に変換先のコンパイラ引数です。

Ciphers:

no-idea       -DOPENSSL_NO_IDEA
no-aes        -DOPENSSL_NO_AES
no-camellia   -DOPENSSL_NO_CAMELLIA
no-seed       -DOPENSSL_NO_SEED
no-bf         -DOPENSSL_NO_BF
no-cast       -DOPENSSL_NO_CAST
no-des        -DOPENSSL_NO_DES
no-rc2        -DOPENSSL_NO_RC2
no-rc4        -DOPENSSL_NO_RC4
no-rc5        -DOPENSSL_NO_RC5

no-md2        -DOPENSSL_NO_MD2
no-md4        -DOPENSSL_NO_MD4
no-md5        -DOPENSSL_NO_MD5
no-sha        -DOPENSSL_NO_SHA
no-ripemd     -DOPENSSL_NO_RIPEMD
no-mdc2       -DOPENSSL_NO_MDC2

no-rsa        -DOPENSSL_NO_RSA
no-dsa        -DOPENSSL_NO_DSA
no-dh         -DOPENSSL_NO_DH

no-ec         -DOPENSSL_NO_EC
no-ecdsa      -DOPENSSL_NO_ECDSA
no-ecdh       -DOPENSSL_NO_ECDH

Non-cipher functionality:

no-sock       -DOPENSSL_NO_SOCK         No socket code.
no-ssl2       -DOPENSSL_NO_SSL2         No SSLv2.
no-ssl3       -DOPENSSL_NO_SSL3         No SSLv3.
no-err        -DOPENSSL_NO_ERR          No error strings.
no-krb5       -DOPENSSL_NO_KRB5         No Kerberos v5.
no-engine     -DOPENSSL_NO_ENGINE       No dynamic engines.
no-hw         -DOPENSSL_NO_HW           No support for external hardware.

Not documented:

no-tlsext     -DOPENSSL_NO_TLSEXT
no-cms        -DOPENSSL_NO_CMS
no-jpake      -DOPENSSL_NO_JPAKE
no-capieng    -DOPENSSL_NO_CAPIENG

いくつかのものには依存関係があることに注意してください。たとえば、SSL および TLS プロトコルで要求されるため、暗号とダイジェスト アルゴリズムなしで SSL ライブラリを構築することはできません。したがって、 を実行する代わりに、libcrypto.a のみをビルドするようにしますmake allmake build_crypto

実験を通じて、(OpenSSL 0.9.8r で) libcrypto には 2 つのアルゴリズムの依存関係があることがわかりました。乱数ジェネレーターのアルゴリズムの MD5 (crypto/rand_lib.c 内) と、証明書ハッシュの出力用の SHA-1 (crypto/asn1/t_x509 内) です。 .c)。これらの依存関係は、開発者による見落としだと思います。

これは、MD5 と SHA のみで libcrypto.a をビルドする方法です。

./config no-idea no-aes no-camellia no-seed no-bf no-cast no-des no-rc2 no-rc4 no-rc5 \
no-md2 no-md4 no-ripemd no-mdc2 no-rsa no-dsa no-dh no-ec no-ecdsa no-ecdh no-sock \
no-ssl2 no-ssl3 no-err no-krb5 no-engine no-hw
make depend
make build_crypto

また、質問にあるように、AES、RSA、SHA、および MD5 を除くすべてでビルドに成功しました。

于 2011-10-19T22:20:31.530 に答える