正規表現を使用してそれを行う方法は次のとおりです 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>"(?:[^"]|"")+"|[^,]+))