問題タブ [x509certificate2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - WCF - スマート カードからの x509 証明書 - 「署名を検証できません」
「Transport with Message Credentials」セキュリティ設定を使用して WSHTTPBinding で構成された IIS6 で実行されている WCF サービスがあります (トランスポート クライアントの資格情報が「なし」に設定され、メッセージが「証明書」に設定されています。これは、 VS 2010 でサービスを使用して自動生成されたコードを使用して作成された .NET クライアント。
私の開発環境では、サービス証明書と IIS SSL 証明書の両方として機能する証明書を作成しました。怠け者だったので、クライアント アプリケーションで使用するために証明書をエクスポートしました。その構成ではすべてがうまく機能しますが、それはターゲット環境ではありません。アイデアは、ユーザーがスマート カードを使用してこのサービスにアクセスできるようにすることです。サーバーは同じドメイン上になく、LDAP は今のところ許可されていません。
問題は、テスト ラボでこれを取得し、SSL 証明書がユーザーの証明書と同じ CA によって発行された環境をセットアップし、カスタムの x509 証明書バリデーターとサービス資格情報を作成しましたが、最初の呼び出しの後に私のバリデーターに、ハンドオフの間に何かが発生し、サービストレースログに「メッセージセキュリティの検証エラー」というエラーが発生し、「署名を検証できません」という内部例外が発生します。これはカスタム バリデータを介して送信され、ログに記録されたメッセージを取得したので、SOAP 側ではすべて問題ないように見え、反対側で証明書を取得しています。使用しようとしているすべての証明書が「信頼されたユーザー」ストアにあることを確認し、証明書をエクスポートしてローカルコンピューターの「個人用」に配置しようとしました
web.config ファイルでのサービス証明書とクライアント証明書の使用法がよくわからない気がします。誰かがここで私を助けてくれますか?
c# - アプリケーション ポリシー OID による証明書の検索
個人証明書ストアに 2 つの x509Certificates がインストールされており、アプリケーション ポリシーによって証明書を取得したいと考えています。
これを実現するために次のコードを使用します。
インストールされた両方の X509Certificate が異なる拡張キーの使用法の値を持っている場合、有効な OID が提供されると、上記のメソッドは正しい証明書を正常に取得します。ただし、1 つの証明書に拡張キー使用法プロパティが設定されていない場合、その証明書も正しい証明書と共にクエリによって返されます。次のような証明書を返さないようにしたい:
- 誤った拡張キー使用法の値が設定されています。
- 拡張キー使用法の値が設定されていません。
どんな助けでも感謝します。
c# - C#はインストールされた証明書を信頼していません
自分で作成したSSL証明書を使用してIISでFTPサーバーをセットアップしました( Makecert.exeとPvk2Pfxを使用)。PFXファイルをFTPサーバーに帰属させました。
FTPサーバーに接続するC#スクリプトがあり、常に次のエラーメッセージが表示されます。
System.Security.Authentication.AuthenticationException:検証手順に従って、リモート証明書が無効です。
ローカルコンピューターとユーザーの「信頼されたルート証明機関」に証明書をインストールしました。
認証されないため、ストアのC#で確認しました。
しかし、私の証明書はリストされていません。MMCコンソールを開くと、証明書が表示されます。
wcf - 証明書IDを持っている場合、コードでエンドポイントアドレスを作成するにはどうすればよいですか?
私のWCFクライアント構成には次のものが含まれています。
App.Configファイルを使用する必要がないため、コードでこれを再作成しようとしていますが、再作成できません。この文字列をbase64から変換して、X509Certificate2クラスの生データとして渡そうとしましたが、そうすると、CryptographicException:"要求されたオブジェクトが見つかりません"が表示されます。
フォーマットがDERだったせいかと思いましたが、そうなのかわからないので、どうやってDERフォーマットに変換するのかわかりません。
誰かが私がこれをコードでロードする方法を知っていますか?
.net - エクスポート可能な自己署名証明書を作成する
Windows マシンで自己署名証明書を作成しようとしています。証明書をエクスポート可能にしたい (秘密鍵も)。しかし、私はこのタスクを達成するのに少し苦労しています。
WIN32 呼び出しを指す Web サイトをいくつか見つけました。Windows XP でコードを実行すると、証明書は個人証明書に保存され、問題なくエクスポートできます。このコードを Windows 7 64 ビットで実行すると、証明書はエラーなしで取得されますが、証明書はエクスポートできません。その後、証明書を割り当てている Web サイトで使用できません。
Certificate クラスは、私が使用しているさまざまな静的メソッドと WIN32 定義をラップするだけの内部クラスであることに注意してください。ここに NativeMethods クラス定義があります (これは私が使用している WIN32 API 呼び出しを示しています):
使用しているマシンが 32 ビットか 64 ビットかは関係ありますか? 私はこの時点で何をすべきか途方に暮れています。次のリンクからこのコードを取得しました: Creating Self Signed Cert in C#
c# - ユーザーを検索するには、x509 証明書のどの部分をデータベースに保存する必要がありますか?
カスタム ユーザー ストアに対してフォーム認証を使用する Web アプリケーションがあります。ユーザー エンティティを拡張して、ユーザー名/パスワードの代わりに使用するクライアント証明書を構成できるようにします。
AuthorizeRequest
クライアント証明書を受け入れるように IIS を正常に構成しました。セキュリティ モジュールのイベントでクライアント証明書を調べて検証できます。最後のステップは、提供されたクライアント証明書をユーザーに関連付けることです。テスト目的で、私は現在、Users テーブルに証明書のサブジェクト名を記録し、その方法でユーザーを検索しています。
もちろん、それは生産には十分ではありません。ユーザーを検索してログインできるように、クライアント証明書からユーザー テーブルに何を保存する必要がありますか?
c# - X509 カスタム拡張 - どのように設定しますか?
CustomExtensions
広範な検索を行っても、X509 (v3) 証明書にカスタム拡張機能 (プロパティ) を設定する例が見つかりません。
(既にマシンにインストールされている既存の CA 証明書に基づいて) 新しい証明書を生成したい場合、カスタム拡張機能を追加するにはどうすればよいですか? 後で検査するために、証明書にいくつかの追加のカスタム情報を持ち歩くことを検討しています。これは、プログラムまたは makecert を使用して行うことができますか? それとも、これらの拡張機能は、証明書の生成時に呼び出されるカスタム ポリシー モジュールを作成することによってのみ設定できますか? これは、.Net フレームワークの通常のクラスX509Certificate
またはクラスを使用して達成できますか?X509Certificate2
カスタム拡張機能を検査するコードは見つかりましたが、設定するコードはありません。
c# - OpenSSLとC#の間で異なるS/MIME署名
.NetプログラムでOpenSSLコードを使用しようとしています。コードは次のとおりです。
.Net OpenSSLを使用しようとしましたが、使用方法がまったくわからず、適切なドキュメントが見つかりませんでした。同じ署名プロセスを実行するために.Netを使用することにしました。コードは次のとおりです。
ただし、C#とOpenSSLの結果は同じではありません。誰かが私を助けてくれますか?
前もって感謝します!
x509certificate2 - クライアント証明書認証に X509Certificate Pfx を使用すると、C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys に作成される一時ファイルが多すぎます
HttpWebRequest で ClientCertificate 認証を使用しています。クライアント証明書認証のために、Pfx ファイルから X509Certificate を作成し、発信 HttpWebRequest に添付します。
リクエストが作成された後、C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys フォルダーに多くの一時ファイルが表示されます。
さらにリクエストを行うと、C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys フォルダーに作成される一時ファイルの数が増え続けていることがわかります。
pfx ファイルから証明書を作成し、キー コンテナーを設定します。有効性アクセスは、CryptoKeySecurity と CryptKeyAccessRule を使用して付与されます。プライベート メソッド SetKeyContainerSecurity は、CspKeyContainerInfo と CryptoSecurity を受け取ります。次に、CryptAcquirecontext と CryptSetProvParam を使用して、キー コンテナーのセキュリティを設定します。
私たちが直面している問題は、C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys のディスクに大量の一時ファイルが作成されることです。
これらの一時ファイルが確実に削除されるようにするための正しいアプローチは何ですか。
x509certificate2 - MMC 権限が付与された後でも STS キーセットが存在しない
私のアプリケーションは、その場で仮想ディレクトリを作成するだけでなく、それらの仮想ディレクトリで実行される STS 対応の Web アプリケーション用のアプリケーション プールも作成します。アプリケーション プールは、ApplicationPoolIdentity アカウント (IIS APPPOOL\MyAppPool) で実行されます。そして、インストールされた証明書へのアクセスをプログラムで許可する方法を見つけようとしています。
私の最初のアプローチは、WinHttpCertCfg を実行するバッチ ファイルを使用することでした。ただし、このアプローチは、「アクティブ化」されたアプリ プール アカウントでのみ機能します。「アクティブ化」とは、新しいアプリケーションを少なくとも 1 回参照したことを意味します。これが発生するまで、WinHttpCertCfg は常に「ハンドルが無効です」というメッセージを返します。
私が試みた次のアプローチは、ここから得られた解決策に基づいていました。このソリューションは、MMC で証明書を参照して [証明書キーの管理] を選択すると、アプリ プール アカウントが一覧表示されるという意味で機能します。WinHttpCertCfg を実行してアクセス権のあるアカウントを一覧表示しても、新しいアプリ プールが一覧表示されます。
しかし、結局のところ... Webアプリケーションを参照すると、「キーセットが存在しません」というメッセージが表示されます。
私の焦点は、2番目のアプローチを修正することです。これが元のコードへの私の変更です