4

OpenSSL FIPS コンテナー バージョン 2.0.1 をビルドし、そのコンテナーを使用して OpenSSL 1.0.1c をビルドしました ( OpenSSL FIPS オブジェクト モジュール v2.0 のユーザー ガイドの指示に従って):

SET FIPSDIR=C:\OpenSSL\FIPS

cd C:\OpenSSL\openssl-fips-2.0.1
ms\do_fips

cd C:\OpenSSL\openssl-1.0.1c
ms\do_nasm
nmake -f ms\ntdll.mak

.NET アプリケーションでこれらのインポートを取得しました (これは明らかに上記の libeay32.dll を使用しています)。

[DllImport("libeay32", CallingConvention = CallingConvention.Cdecl)]
public extern static void ERR_load_crypto_strings();

[DllImport("libeay32", CallingConvention = CallingConvention.Cdecl)]
public extern static int ERR_print_errors_fp(SafeHandle file);

[DllImport("libeay32", CallingConvention = CallingConvention.Cdecl)]
public extern static int FIPS_mode_set(int onoff);

問題は、 を呼び出すと、 FIPS モードを有効にできなかったことを示すFIPS_mode_set(1)が返されることです。0

問題の原因を突き止めるために、私はこれを行っています:

ERR_load_crypto_strings();

using (FileStream fs = new FileStream...)
{
  ERR_print_errors_fp(fs.SafeFileHandle);
}

このエラーメッセージが表示されます:

OPENSSL_Uplink(0FAF1000,08): no OPENSSL_Applink

答えを探してみましたが、空っぽになりました - どんな提案でも大歓迎です!

**更新**

Visual Studio 2010 コマンドライン (以前に使用したもの) の代わりに、Visual Studio 2008 コマンドラインから同じ手順を使用してビルドしようとしましたが、うまくいきました!

しかし、Visual Studio 2010 で動作しない理由がわかりません。また、Visual Studio 2008 を永遠に使い続けたくありません。Visual Studio 2010 で正常にビルドするにはどうすればよいでしょうか?

4

3 に答える 3

0

openssl ドキュメントには、適切なapplinkを作成およびコンパイル/リンクしていないことを示唆するこのエラーについての言及があります。

または、openssl ライブラリを正しいランタイムのコードにリンクしていない場合 (たとえば、c/c++ ラッパー コードをコンパイルしている場合は /MD)、このエラーが発生する可能性があると思います。

于 2012-09-03T20:11:45.530 に答える
-1

これをもっとうまく使ってみてください:http ://sourceforge.net/projects/openssl-net/-それはあなたにたくさんの質問を節約するでしょう。

OpenSSLは複雑であるため、C#ラッパーライブラリは非常に役立ちます。OpenSSLを使用するには、pinvokeを使用する必要があります。これは、このライブラリで確実に実行されます。

または、外部ユーティリティstunnel http://www.stunnel.org/index.htmlを使用するか、exec()を介してopenssl direcltyを使用することもできます。これにより、.NETライブラリのパフォーマンスが低下した場合に、操作ごとの安定性を高めることができます。 。

WIndows Crypto APIを使用することを強くお勧めします-http://msdn.microsoft.com/en-us/library/windows/desktop/aa388162(v=vs.85).aspxは標準ベースであり、同じように機能しますちなみに、C#やMSIEを介して、システム証明書リポジトリを使用します。システム証明書リポジトリは、インポートとエクスポートも行います。

于 2012-09-03T20:33:08.803 に答える