MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Introduction to Network Security Services

Network Security Services (NSS) とは、SSL、S/MIME、その他インターネットセキュリティ規格をサポートするアプリケーションのクロスプラットフォーム開発を支援するように設計されたライブラリの一式です。NSS の一般的な概観やサポートしている規格についての情報は NSS 概観 をご覧ください。

共有ライブラリ

Network Security Services は、スタティックライブラリと共有ライブラリの両方を提供します。共有ライブラリを利用するアプリケーションは、ライブラリがエクスポートする API のみを利用しなければなりません。3 つの共有ライブラリは、共通機能をエクスポートします。

  • SSL ライブラリは SSL のコア機能をサポートします。
  • S/MIME ライブラリは S/MIME のコア機能をサポートします。
  • NSS ライブラリは暗号化のコア機能をサポートします。

エクスポートされた API を利用しているアプリケーションが、将来のバージョンのライブラリでも互換性を保てることを保証します。NSS 3.2 の共有ライブラリからエクスポートされた共通機能の完全なリストは、NSS の機能 をご覧ください。

どの NSS 3.1.1 のスタティックライブラリが上記 NSS 3.2 の共有ライブラリに置き換わったのかは、Migration from NSS 3.1.1 をご覧ください。

下の図 1 は、上に挙げられた 3 つの共有ライブラリと NSPR 間の関係を単純化したものを示しています。NSPR は、スレッド管理や I/O といった、低レベルでのクロスプラットフォームサポートを提供します。(NSPR は、別の Mozilla プロジェクトであることにご注意ください。詳細は、Netscape Portable Runtime をご覧ください。)

図 1 NSS コアライブラリ間および NSPR 間の関係

命名規則と特別なライブラリ

Windows と Unix は、スタティックライブラリおよびダイナミックライブラリに対し、それぞれ違った命名規則を利用します。

  Windows Unix
スタティック .lib .a
ダイナミック .dll .so または .sl

加えて、Windows はダイナミックライブラリにバインドされた「インポート」ライブラリを持っています。そのため NSS ライブラリは、次の形式になっています。

  • libnss3.so - Unix 共有ライブラリ
  • libnss3.sl - HP-UX 共有ライブラリ
  • libnss.a - Unix スタティックライブラリ
  • nss3.dll - Windows 共有ライブラリ
  • nss3.lib - Windows import library binding to nss3.dll にバインドされた Windows インポートライブラリ
  • nss.lib - Windows スタティックライブラリ

NSS、SSL、および S/MIME は、上記すべての形式を備えています。

次のスタティックライブラリは、どの共有ライブラリにも含まれません。

  • libcrmf.a/crmf.lib は、CRMF 操作に API を提供します。
  • libjar.a/jar.lib は、JAR ファイルを生成するために API を提供します。

次のスタティックライブラリは、外部のロード可能な PKCS #11 モジュールにのみ含まれます。

  • libnssckfw.a/nssckfw.lib は、PKCS #11 モジュールを書くための API を提供します。
  • libswfci.a/swfci.lib は、FORTEZZA ソフトウェアをサポートします。

次の共有ライブラリは、独立ロード可能なモジュール (standalone loadable modules) で、直接リンクされることを目的にしていません。

  • libfort.so/libfort.sl/fort32.dll は、FORTEZZA ハードウェアへのサポートを提供します。
  • libswft.so/libswft.sl/swft32.dll は、FORTEZZA ハードウェアへのサポートを提供します。
  • libnssckbi.so/libnssckbi.sl/nssckbi.dll は、信頼済みルート証明書のデフォルトセットを定義します。

ILP32 のサポート

NSS 3.2 以降のバージョンでは、新たに 2 つの共有ライブラリが PARisc CPU 用 HP-UX プラットフォームおよび (Ultra) Sparc (非 x86) CPU 用 Solaris 用に加えられています。これら HP-UX および Solaris プラットフォームは、ILP32 プログラムモデルを 32 ビット CPU および 64 ビット CPU 上で走らせるプログラムを利用できます。新たに加えられた 2 つのライブラリは、それぞれこの 2 つの CPU で使用する際に最適化されたパフォーマンスを提供します。

これら 2 つの共有ライブラリは他のプラットフォーム向けには提供されません。これらのライブラリの名前は、下の表に示すように、プラットフォームに依存しています。

プラットフォーム 32 ビット CPU 向け 64 ビット CPU 向け
Solaris/Sparc libfreebl_pure32_3.so libfreebl_hybrid_3.so
HPUX/PARisc libfreebl_pure32_3.sl libfreebl_hybrid_3.sl
AIX (将来のリリースを計画) libfreebl_pure32_3_shr.a libfreebl_hybrid_3_shr.a

これらのライブラリにアプリケーションをリンクしないでください。ライブラリは NSS 作動時に動的にロードされます。プログラムをライブラリのうちどちらかにリンクさせた場合、アプリケーションプログラムが特定の CPU 上でしか作動しなくなったり (例: 64 ビット CPU 上のみで作動し、32 ビット CPU では作動しない)、または 64 ビット CPU 上のより効率的な 64 ビットコードを利用できなくなる場合があります。

これらの共有ライブラリを受け入れることができるプラットフォーム上では、その共有ライブラリがないと NSS 3.2 は作動しません。そのため、アプリケーションがこれらのファイルを NSS 共有ライブラリのディストリビューションを含むようにしてください。これら共有ライブラリは、他の NSS 共有ライブラリ (例えば libnss3.so) がインストールされているディレクトリにインストールされていなければなりません。二つの共有ライブラリはともに、インストール先のシステムが 32 ビット CPU や 64 ビット CPU が使われている場合は、必ずインストールされます。NSS が作動時にローカルシステムに対して正しいファイルを選択します。

NSS 3.x はまた、上記プラットフォーム向けの LP64 モデルも利用可能ですが、NSS 3.x の LP64 モデルはこれら二つの共有ライブラリを持たないことを念頭においてください。

知っておくべきこと

NSS を利用する前に、次の話題を理解していることが求められます。

  • 公開鍵暗号の概念と技術
  • セキュリティつきソケット層 (SSL) プロトコル
  • 暗号認証インターフェース (cryptographic token interfaces) の PKCS #11 規格
  • クロスプラットフォーム開発の要点および技術

より多くの情報を得るには

NSS を利用する前に理解しておかなければならない PKI および SSL の情報は、以下のページをご覧ください。

API に関する参考文献、ビルドガイド、およびその他の有益な情報へのリンクは、NSS プロジェクトのページ をご覧ください。

上で述べられているように、NSS は NSPR の上にビルドされています。NSPR 用 API に関する参考文献は、NSPR API リファレンス をご覧ください。

ドキュメントのタグと貢献者

タグ: 
 このページの貢献者: kohei.yoshino
 最終更新者: kohei.yoshino,