ソースコードはcurlをコンパイルしてnssをサポートさせます
3249 ワード
これは最近のCurl、NSSに関する最後の文章で、客観的に言えば、国内ではこの方面(特にNSS)に対する知識の紹介が非常に少なく、多くの人がCurlを使う可能性があるが、HTTPS協定をどのように支持しているのか分からない.CurlがHTTPSサイトを要求できないと、エビを捕まえる.ネット上にも様々な厳格ではない文章があふれていて、この方面に興味のある技術者を退却させて、もしあなたが辛抱強く私が最近書いた一連の文章を見終わったら、必然的に収穫すると信じています.
前のいくつかの文章はすべてLinxuリリース版のパッケージのインストール方式を使ってCurl、OpenSSL、NSSを紹介して、パッケージのインストール方式の利点はインストールの便利さにありますが、多くの技術の細部を遮断して、いったん使用中に問題が発生したら、どのように解決するか分からないかもしれません.
この文章は簡単で,ソースコードにCurlをインストールし,NSS暗号学ライブラリをサポートさせることで,NSSに対する理解をさらに深める.
CurlコンパイルがNSSをサポートするためには、次のキーがあります. Curlをダウンロード、構成、コンパイル、インストールします. CurlのHTTPS機能サポートはNSSに依存するため、ソースコードインストールNSSも必要である.
インストールNSSをコンパイルする方法が分からない場合は、この記事「NSSを初めて認識し、全貌を理解する」を参照する必要があります.コンパイルされたNSSは/root/nssproject/ディレクトリの下に保存されていると仮定します.
次は私について一歩一歩コンパイルしてください.
1:Curlソースをダウンロードします.
curl-7.61.0.tar.gzをダウンロード:
2:構成
次のコマンドを実行します.
そのうち--without-sslはOpenSSLのインストールを禁止することを示します.--prefixは、Curlを特定のディレクトリにインストールすることを示します.--with-nssはNSSインストールディレクトリを表します.
注意: LD_LIBRARY_PATH変数は必ず設定しなければならない.そうしないと、コンパイル時にNSSが見つからない. コマンドラインの最後のライン出力HTTPS IMAP IMAPSが発生した場合、構成が成功したことを示します.
3:コンパイル
次に、次のコマンドのコンパイルを実行します.
次のエラーが発生しました.
ヒントヘッダファイルが見つかりません.lib/Makefileファイルを開き、CPPFLAGS変数を次に示します.
次のように変更します.
4:インストール
コンパイルに成功したら、次のコマンドを実行してインストールします.
5:テスト
インストールが完了したら、テストが成功したかどうかを確認します.
curlが使用するルート証明書で、curl-configツール(ソースコードコンパイルによって生成された)を実行します.
では、ca-certificates.crtというファイルは誰が生成したのでしょうか.ソースコードのコンパイルにはこのファイルは含まれていません.もし私のシリーズの文章を見たら、簡単に理解できます.ca-certificatesパッケージを使用してCAルート証明書をインストールしたり、MozillaのCAルート証明書を手動でダウンロードしたりすることができます.
関連記事: NSSを初めて知り、全貌を知る apt,curl,openssl間の件 yum,curl,nss間の件 ubuntu,curl,openssl更新ルート証明書の詳細 本文解剖centos,curl,nss更新ルート証明書の詳細 私の公衆番号(yudadanwx、虞大胆のひそひそ)に注目して、私の最新の博文を理解します.
前のいくつかの文章はすべてLinxuリリース版のパッケージのインストール方式を使ってCurl、OpenSSL、NSSを紹介して、パッケージのインストール方式の利点はインストールの便利さにありますが、多くの技術の細部を遮断して、いったん使用中に問題が発生したら、どのように解決するか分からないかもしれません.
この文章は簡単で,ソースコードにCurlをインストールし,NSS暗号学ライブラリをサポートさせることで,NSSに対する理解をさらに深める.
CurlコンパイルがNSSをサポートするためには、次のキーがあります.
インストールNSSをコンパイルする方法が分からない場合は、この記事「NSSを初めて認識し、全貌を理解する」を参照する必要があります.コンパイルされたNSSは/root/nssproject/ディレクトリの下に保存されていると仮定します.
次は私について一歩一歩コンパイルしてください.
1:Curlソースをダウンロードします.
curl-7.61.0.tar.gzをダウンロード:
$ wget "https://curl.haxx.se/download/curl-7.57.0.tar.gz"
$ tar xvf curl-7.57.0.tar.gz
$ cd curl-7.57.0
$ ./configure -h
2:構成
次のコマンドを実行します.
$ export LD_LIBRARY_PATH='/root/nssproject/dist/Linux3.13_x86_64_cc_glibc_PTH_64_OPT.OBJ/lib'
$ ./configure --prefix=/opt/curlnss --with-nss=/root/nssproject/dist/Linux3.13_x86_64_cc_glibc_PTH_64_OPT.OBJ/ --without-ssl
そのうち--without-sslはOpenSSLのインストールを禁止することを示します.--prefixは、Curlを特定のディレクトリにインストールすることを示します.--with-nssはNSSインストールディレクトリを表します.
注意:
3:コンパイル
次に、次のコマンドのコンパイルを実行します.
$ make
次のエラーが発生しました.
curl_ntlm_core.c:101:23: fatal error: pk11pub.h: No such file or directory
# include
^
compilation terminated.
ヒントヘッダファイルが見つかりません.lib/Makefileファイルを開き、CPPFLAGS変数を次に示します.
CPPFLAGS = -I/root/nssproject/dist/Linux3.13_x86_64_cc_glibc_PTH_64_OPT.OBJ//include -I/usr/local/include
次のように変更します.
CPPFLAGS = -I/root/nssproject/dist/Linux3.13_x86_64_cc_glibc_PTH_64_OPT.OBJ//include -I/usr/local/include -I/root/nssproject/dist/public/nss
4:インストール
コンパイルに成功したら、次のコマンドを実行してインストールします.
$ make install
5:テスト
インストールが完了したら、テストが成功したかどうかを確認します.
$ /opt/curlnss/bin/curl -V
curl 7.57.0 (x86_64-pc-linux-gnu) libcurl/7.57.0 NSS/3.38 Beta zlib/1.2.8 nghttp2/1.31.0-DEV
Release-Date: 2017-11-29
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz HTTP2 UnixSockets HTTPS-proxy
curlが使用するルート証明書で、curl-configツール(ソースコードコンパイルによって生成された)を実行します.
$ opt/curlnss/bin/curl-config --ca
/etc/ssl/certs/ca-certificates.crt
では、ca-certificates.crtというファイルは誰が生成したのでしょうか.ソースコードのコンパイルにはこのファイルは含まれていません.もし私のシリーズの文章を見たら、簡単に理解できます.ca-certificatesパッケージを使用してCAルート証明書をインストールしたり、MozillaのCAルート証明書を手動でダウンロードしたりすることができます.
関連記事: