web-dev-qa-db-ja.com

LDAP属性値のみをダウンロードするにはcurlを使用します

次のcurlコマンドを使用して、LDAPディレクトリから値をダウンロードしています。

curl  ldap://example.com/CN=ACME-Test-CRL,O=ACME?certificateRevocationList;binary -o crl.crl

問題は、ファイルcrl.crlに次のように書き込むことです。

DN: CN=ACME-Test-CRL,O=ACME certificateRevocationList;binary: MIICxzCBsAIBATAN...

Base64でエンコードされたCRLのみが必要な場合、つまりMIICxzCBsAIBATANを開始する場合

とにかく、base64でエンコードされたバイナリ値をファイルに書き込むようにcurlに指示することはできますか?

3
Fred Lord

OpenVPNの「crl-verify」コマンドでActiveDirectory CAのCRLを適用しようとしたときに、同じ問題が発生しました。

私の解決策は次のとおりです。

curl -o CAName.ldap -u domain\\username:password "ldap://domaincontroller.domain.local/CN=CAName,CN=ServerName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local?certificateRevocationList" && grep -Po '(?<=certificateRevocationList:: )(.+)' CAName.ldap > CAName.b64 && base64 -d CAName.b64 > CAName.der && openssl crl -inform DER -in CAName.der -outform PEM -out CAName.pem

説明:

curl -o CAName.ldap -u domain\\username:password "ldap://domaincontroller.domain.local/CN=CAName,CN=ServerName,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local?certificateRevocationList"

このコマンドは、DNとbase64暗号化コンテンツを含むバイナリ部分を出力ファイル「-oCAName.ldap」にダウンロードします。 「-u」の部分は、匿名でないLDAPバインディングに必要です。

grep -Po '(?<=certificateRevocationList:: )(.+)' CAName.ldap > CAName.b64

これにより、base64部分が新しいファイル「CAName.b64」に追加されます

base64 -d CAName.b64 > CAName.der

Base64コンテンツを(LDAPクエリからバイナリに)新しいファイル「CAName.der」に復号化します

openssl crl -inform DER -in CAName.der -outform PEM -out CAName.pem

次に、OpenVPNの「crl-verify」用にDER(バイナリ)をPEMに変換します。

あなたはopensslでコンテンツを確認することができます:

openssl crl -inform PEM -text -noout -in CAName.pem
1
unNamed