ソースコードは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をダウンロード:
    $ 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インストールディレクトリを表します.
    注意:
  • LD_LIBRARY_PATH変数は必ず設定しなければならない.そうしないと、コンパイル時にNSSが見つからない.
  • コマンドラインの最後のライン出力HTTPS IMAP IMAPSが発生した場合、構成が成功したことを示します.

  • 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ルート証明書を手動でダウンロードしたりすることができます.
    関連記事:
  • NSSを初めて知り、全貌を知る
  • apt,curl,openssl間の件
  • yum,curl,nss間の件
  • ubuntu,curl,openssl更新ルート証明書の詳細
  • 本文解剖centos,curl,nss更新ルート証明書の詳細
  • 私の公衆番号(yudadanwx、虞大胆のひそひそ)に注目して、私の最新の博文を理解します.