cert.getSubjectX500Principal().getName()
BouncyCastleに依存したくない場合に備えて、正規表現を使用してこれを行う方法は次のとおりです。
この正規表現は、識別された名前を解析し、一致ごとにグループを指定してキャプチャしますname
。val
DN文字列にコンマが含まれている場合、それらは引用符で囲まれていることを意味します。この正規表現は、引用符で囲まれた文字列と引用符で囲まれていない文字列の両方を正しく処理し、引用符で囲まれた文字列のエスケープされた引用符も処理します。
(?:^|,\s?)(?:(?<name>[A-Z]+)=(?<val>"(?:[^"]|"")+"|[^,]+))+
これはうまくフォーマットされています:
(?:^|,\s?)
(?:
(?<name>[A-Z]+)=
(?<val>"(?:[^"]|"")+"|[^,]+)
)+
動作を確認できるリンクは次のとおりです:
https ://regex101.com/r/zfZX3f/2
正規表現でCNのみを取得する場合は、この適合バージョンで次のようになります。
(?:^|,\s?)(?:CN=(?<val>"(?:[^"]|"")+"|[^,]+))