This is a generic BER-TLV / BER / CER / DER pretty-printer.
It supports binary or PEM-encoded files as input, as an argument filename or on the standard input.
Indefinite length encoding is supported, as well as multi-byte tag numbers.
Most of the X.509 OIDs are printed with their usual names.
Example:
suut@suut-laptop:~$ ./bercerder.py E7.pem
[SEQUENCE]
[SEQUENCE]
[cont:0]
[INTEGER] 2
[INTEGER] 262577162592866520493608036064800233786
[SEQUENCE]
[OBJECT IDENTIFIER] ecdsaWithSHA384
[SEQUENCE]
[SET]
[SEQUENCE]
[OBJECT IDENTIFIER] countryName
[PrintableString] US
[SET]
[SEQUENCE]
[OBJECT IDENTIFIER] organizationName
[PrintableString] Internet Security Research Group
[SET]
[SEQUENCE]
[OBJECT IDENTIFIER] commonName
[PrintableString] ISRG Root X2
[SEQUENCE]
[UTCTime] 240313000000Z
[UTCTime] 270312235959Z
[SEQUENCE]
[SET]
[SEQUENCE]
[OBJECT IDENTIFIER] countryName
[PrintableString] US
[SET]
[SEQUENCE]
[OBJECT IDENTIFIER] organizationName
[PrintableString] Let's Encrypt
[SET]
[SEQUENCE]
[OBJECT IDENTIFIER] commonName
[PrintableString] E7
[SEQUENCE]
[SEQUENCE]
[OBJECT IDENTIFIER] ecPublicKey
[OBJECT IDENTIFIER] secp384r1
[BITSTRING] 000441e8049308587fbe37300cc0a041eafe56da84933ec900dbab6712cff94f5309e8a82fab29e59f1546f45b624e0fd4834199b79f4072451c2c5c4a32a6c2dbc6056a65ffdadaf075b4403b146895b6a8e26a71e274655153de16d41e27c133fd
[cont:3]
[SEQUENCE]
[SEQUENCE]
[OBJECT IDENTIFIER] keyUsage
[BOOLEAN] TRUE
[OCTET STRING] 03020186
[SEQUENCE]
[OBJECT IDENTIFIER] extKeyUsage
[OCTET STRING] 301406082b0601050507030206082b06010505070301
[SEQUENCE]
[OBJECT IDENTIFIER] basicConstraints
[BOOLEAN] TRUE
[OCTET STRING] 30060101ff020100
[SEQUENCE]
[OBJECT IDENTIFIER] subjectKeyIdentifier
[OCTET STRING] 0414ae489edc871d44a06fdaa2e560740478c29c0080
[SEQUENCE]
[OBJECT IDENTIFIER] authorityKeyIdentifier
[OCTET STRING] 301680147c4296aede4b483bfa92f89e8ccf6d8ba9723795
[SEQUENCE]
[OBJECT IDENTIFIER] authorityInfoAccess
[OCTET STRING] 3024302206082b060105050730028616687474703a2f2f78322e692e6c656e63722e6f72672f
[SEQUENCE]
[OBJECT IDENTIFIER] certificatePolicies
[OCTET STRING] 300a3008060667810c010201
[SEQUENCE]
[OBJECT IDENTIFIER] cRLDistributionPoints
[OCTET STRING] 301e301ca01aa0188616687474703a2f2f78322e632e6c656e63722e6f72672f
[SEQUENCE]
[OBJECT IDENTIFIER] ecdsaWithSHA384
[BITSTRING] 003066023100fdee4dfb08c093de39729685c4669e302d777f2bdd6cdcd795183d1cd7449718b9997748e1acf60b290d534ee2170a840231008a13c20e4c386f506f7cb83c54d2cbb9a3299f545b675ebcd9c851eb33510ac7b289ee128f24c2764bec01afa899049f