ウェビナー『TLSとwolfSSLの2日間集中トレーニング』5/30(火)〜31(水)。for:SearchサポートFAQご質問FAQサポートFAQこのページではwolfSSLチームに寄せられた質問とその回答を紹介しています。このページの情報で解決しない場合は、wolfSSLマニュアルを参照するかsupport@wolfssl.comまでご連絡ください。証明書はどのように取得すれば良いですか?証明書ファイルをC言語のデータに変換できますか?wolfSSLに必要なFlash/RAMのサイズを知るには?wolfSSLまたはwolfCryptで標準関数malloc/free以外のメモリー管理を選べますか?wolfSSLのビルド方法を教えてください。組み込みシステム)IDEのプロジェクトでwolfSSLを使うにはどうしたらいいでしょうか?どのファイルとヘッダーが必要ですか?自社のプラットフォーム上でベンチマークデータを取得できますか?サーバーとクライアントを接続した時、共通の暗号スイートが見つかりませんでした。?最大TLSコードサイズを小さくすることは可能でしょうか?wolfSSLのアプリケーションで、X509証明書から公開鍵を取り出すことができますか?SSL/TLSや暗号処理に関するサンプルコードはありますか?必要なアルゴリズムやプロトコルをビルド時に有効にしたのですが、サーバーと接続できません。証明書に署名を行うにはどのようにすればいいですか?1.wolfSSLアプリケーションのビルドコンフィグレーションはどのように指定できますか?wolfSSLアプリケーションのビルドトラブルで最もよく見られる問題の一つは、アプリケーションとライブラリのミスマッチです。wolfSSLライブラリをアプリケーションとは独立にコンパイルした場合、ライブラリのビルド時に設定したコンフィグレーションオプションと同じものをアプリケーションのビルド時にもインクルードしなければいけません。configureコマンドでビルドする場合./configureコマンドを実行すると、指定したオプションを含んだ<wolf-root>/wolfssl/options.hファイルが生成されます。アプリケーションコードには以下の行を追加してください。このパターンはoptions.h以外の他のインクルードファイルでも使えます。組み込み用のIDEや独自のMakefileでビルドする場合wolfSSLをソースコードから直接ビルドした場合、options.hには生成されたオプションが何も含まれていません。そんな時はWOLFSSL_USER_SETTINGSオプションを定義して、アプリケーションのプロジェクト内にuser_settings.hというヘッダーファイルを作ります。user_settings.hへのインクルードパスが設定されていることを確認してください。上記のようなインクルードパターンはoptions.h以外の他のインクルードファイルにも使うことができます。以下はプラットフォームごとのuser_settings.hの例です。(ルート)証明書を見つけるには少し前提知識が必要です。最初にwolfSSLがどのように証明書チェーンを検証するかを理解する必要があります。wolfSSLマニュアルの7.3に証明書を検証する手順の説明がありますので参照してください。wolfSSLでは、証明書チェーンが信頼できるものかを検証するためにトップ(またはルート)証明書が必要です。署名されているとします。信頼された証明書として読み込む必要があります。シンプルな具体例を見てみましょう。サーバー証明書チェーンが以下のようになっているとします。使用し読み込んでいるとします。信頼されるルート証明書としてwolfSSLに登録されていなければ、内部に信頼する証明書として登録します。(wolfSSLは、コモンネームハッシュ、公開鍵、鍵タイプなど証明書の検証に必要な項目のみ保存します。C)を送ってきてもサーバー証明書チェーンを検証することができます。情報がないため証明書チェーンの検証はできません。両方の証明書を事前にクライアントに読み込んでおく必要があります。相当する証明書を各々ファイルに保存します。信頼する証明書として関数呼び出し毎に、内部でそれらの証明書を追加保持します。buffersの略)をお使いください。取得した証明書を好きな場所に配置してください。(wolfSSLは<wolfssl-root>/certsディレクトリに証明書ファイルを置きますが、どこにおいても問題ありませんのでユーザー環境で最適な場所を選んでください。)gencertbuf.plスクリプトの一部をお使いの証明書にあわせて@fileListの値を変更してください。証明書なら256と変更してください。)スクリプトを実行すると、<wolfssl-root>/wolfssl/certs_test.hヘッダーファイルが生成されます。スクリプトはマニュアルで実行してください。wolfSSLに必要なFlash/RAMのサイズを知るには?wolfSSLのメモリー消費量はコンパイル時にどのようなオプションを指定してどのような機能を使うかによって変わります。オプションにはメモリーの使用方法や使用量を指定するものもあります。Useガイドをご参照ください。最大リソース使用量の主な要因は鍵のサイズです。大きな鍵サイズはリソースの利用量を増やします。wolfSSLまたはwolfCryptで標準関数malloc/free以外のメモリー管理を選べますか?USER_MALLOCオプションを指定することによってユーザー独自のmalloc関数をwolfSSLで使うことができます。wolfSSLのビルド方法を教えてください。組み込みシステム)wolfSSLユーザーマニュアルの第2章「wolfSSLのビルド」をご参照ください。IDEのプロジェクトでwolfSSLを使うにはどうしたらいいでしょうか?どのファイルとヘッダーが必要ですか?wolfSSLは、多くのポピュラーなIDE環境用のプロジェクトファイルを提供しています。プロジェクトファイルと利用方法についてはwolfSSLソースのIDEディレクトリの下にあります。src/*.cwolfcryptsrc/*.cwolfssl/*.hインクルードパスとしてwolfSSLソースファイルのルートディレクトリを指定してください。様々なプラットフォームでwolfSSLをビルドするより詳しいドキュメントはwolfSSLユーザーマニュアルのセクション2.4「(組み込みシステム向け)非標準環境でのビルド」をご参照ください。自社のプラットフォーム上でベンチマークデータを取得できますか?wolfSSLはお客様のプラットフォーム上で動作させることのできるベンチマークアプリケーションを提供しています。ベンチマークアプリケーションはビルドで有効化された暗号アルゴリズムでのベンチマークを行います。アプリケーションのソースファイルはwolfcrypt/benchmark/benchmark.cです。*nixプラットフォームでは、ベンチマークは./wolfcrypt/benchmark/benchmarkで実行することができます。makeによるビルドでは、ベンチマークアプリケーションはデフォルトでコンパイルされます。サーバーとクライアントを接続した時、共通の暗号スイートが見つかりませんでした。?wolfSSLはクライアントとサーバーの両方で共通の暗号スイートになるよう設定してコンパイルすることができます。configureオプションで暗号スイートを追加することができます。–helpで確認することができます。*nix環境でデフォルトの暗号スイートを確認するには、wolfSSLルートディレクトリから以下のコマンドを実行します。-eWindows環境でデフォルトの暗号スイートを見るためには、client.exeコマンドがあるディレクトリから以下のように実行します。最大TLSコードサイズを小さくすることは可能でしょうか?組み込みシステムのメモリ制限のためにTLSレコードサイズを制限することができます。通常のTLSの最大レコード長は2^14バイト(~16k)です。wolfSSLは最大レコードサイズを制限するために2つの方法があります。1つ目は、configureの–enable-maxfragmentオプションで指定する方法です。これはクライアントがサーバーに接続する時、wolfSSL_CTX_UseMaxFragment関数またはwolfSSL_UseMaxFragment関数を呼ぶために必要になります。同じサーバーに複数の接続を行いたい場合は、wolfSSL_CTX_UseMaxFragmentの方をお使いください。2つ目の方法はMAX_RECORD_SIZEを定義する方法です。この場合、サーバーとクライアントの両方に設定する必要があります。クライアントの設定ができない場合はこのオプションは使えません。wolfSSLのアプリケーションで、X509証明書から公開鍵を取り出すことができますか?wolfSSLは、この機能を持つwolfSSL_x509_get_pubkey()を備えていて、WOLFSSL_EVP_PKEYのポインタを返します。WOLFSSL_EVP_PKEYは、公開鍵に関連したメンバーを持つ構造体でポインタから直接アクセスすることができます。構造体の宣言は<wolfssl/ssl.h>にあります。GitHubリポジトリにあります。https://github.com/wolfSSL/wolfssl-examplesからダウンロードすることができます。CertManager、署名や検証など各種のサンプルプログラムがあります。必要なアルゴリズムやプロトコルをビルド時に有効にしたのですが、サーバーと接続できません。サーバーによっては特定のTLS拡張やECCカーブが必要な場合があり、またサポートされている暗号やプロトコルバージョンに関わらず接続を無視する場合もあります。configureスクリプト(またはMakefileプロジェクトやIDEプロジェクト)なしでwolfSSLをビルドする場合は、HAVE_TLS_EXTENSIONSマクロとHAVE_SUPPORTED_CURVESマクロが定義されていることを確認してください。14.証明書に署名を行うにはどのようにすればいいですか?証明書の署名は、多くのセキュリティプロトコルの基本的な機能です。wolfSSLは証明書の署名を簡単に行えるようにするためのAPIを備えています。キーとなるAPIは以下の通りです。Structwc_MakeCertReqwc_SignCertまた、これらのAPIの使い方やどのような状況で利用できるかを説明するためのサンプルコードのリポジトリがあります。CSRのサンプルはwolfssl-examples/certgen/にあります。このサンプルをビルドして動かすためにはwolfSSLがインストールされている必要があります。wolfSSLはダウンロードページまたはgitHubリポジトリからダウンロードしてください。サンプルコードはgitHubのwolfSSLサンプルコードリポジトリ(https://github.com/wolfSSL/wolfssl-examples)からダウンロードしてください。wolfSSLとサンプルコードをgitHubからクローンしてビルドする方法は以下の通りです。REQUEST-----ページのトップへ戻るwolfSSL軽量SSL/TLSライブラリwolfSSLは組み込みシステム向けの軽量SSL/TLSライブラリです。既存のネットワークスタックにも容易にSSL/TLS層を追加することができます。最新プロトコルTLS1.3、DTLS1.2をサポートしています。wolfSSL製品ページwolfCrypt暗号エンジンwolfCryptは組み込みシステム向けのコンパクトな暗号アルゴリズムのライブラリです。楕円暗号、Curve25519など最新のアルゴリズムにも対応します。CMVP認証を取得しています(認証#3389)。FIPS認証版、wolfSSLの認証取得サービスについてはこちらのページを参照ください。FIPS認証版wolfMQTTIoTクライアントライブラリwolfMQTTはIoTデバイス向けのMQTTクライアントライブラリです。wolfSSLを併用することでSSL/TLSをサポートします。MQTT3.1に準拠し、すべてのパケットタイプ、QoSをサポートします。wolfMQTT製品ページご質問、ご不明点がありましたら、お気軽にお問い合わせください。reserved.サポートとヘルプサポートフォーラムサポートパッケージコンサルティングサービス脆弱性情報お問い合わせリファレンスアルゴリズム/プロトコルリファレンスプレゼンテーションイベント。