2017-11-06 13 views
0

セキュリティで保護された通信でサーバーと通信するアプリケーションを開発しています。したがって、アプリケーションのユーザーはクライアント証明書ファイル(x509証明書)を選択する必要があります。ユーザーがTLSバージョンを指定できるようにする必要があります。 x509Certificate cert = TLSバージョンを識別する新しいX509Certificate(FileName)のインスタンスで属性が見つかりませんでした。 続行するには?x509証明書のTLSバージョンを指定する方法

+1

TLSのバージョンが*証明書*に結びつくと思われるのはなぜですか? PKIはTLSの領域外に存在します。 –

+2

これは、運転免許証で運転している自動車の色を指定したいと言っているようなものです。彼らは「関連」しているが、実際はそうではない。 – bartonjs

答えて

0

TLSのバージョンとX509証明書のバージョンは全く異なる2つのものです。あなたはTLSのバージョンを参照している場合、それはOpenSSLライブラリのクライアント/サーバー方式のさまざまなバージョン(SSL_CTXまたはSSLに設定することができます)を指定することができます。

const SSL_METHOD *SSLv23_method(void); 
const SSL_METHOD *TLSv1_2_method(void); 
const SSL_METHOD *TLSv1_1_method(void); 
const SSL_METHOD *TLSv1_method(void); 
const SSL_METHOD *SSLv3_method(void); 
const SSL_METHOD *SSLv2_method(void); 

しかし、あなたが本当にX509のバージョンを意味している場合、このことができますopensslライブラリ関数を使用して定義できます。

typedef struct x509_cinf_st { 
    ASN1_INTEGER *version;  /* [ 0 ] default of v1 */ 
    ASN1_INTEGER *serialNumber; 
    X509_ALGOR *signature; 
    X509_NAME *issuer; 
    X509_VAL *validity; 
    X509_NAME *subject; 
    X509_PUBKEY *key; 
    ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */ 
    ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */ 
    STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */ 
    ASN1_ENCODING enc; 
} X509_CINF; 

そして、あなたはおそらくバージョンを処理するには、以下の機能を使用します::X509構造体は、下の(1.0.2l)のように定義された証明書情報の構造体を保持

X509_CINF_new(void); 
X509_CINF * d2i_X509_CINF(X509_CINF **val_out, const unsigned char **der_in, long length); 
int i2d_X509_CINF(X509_CINF *val_in, unsigned char **der_out); 

をしかし、v2とv3のホールド以来オプションフィールドの場合、v3を持たない理由はありません。

関連する問題