certinfo

package module
v1.12.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2024 License: MIT Imports: 22 Imported by: 10

README

Certificate Information for Go

A Golang tool for printing x509 TLS certificates in a format similar to OpenSSL.

This is a (maintained) fork of grantae/certinfo.

In addition to being able to extract and print standard information from any x509 certificate (request), it also includes capabilities to extract and print properties specific to the Smallstep toolchain and other, selected OIDs.

Installation

go get github.com/smallstep/certinfo

Usage

Print a certificate from a website
package main

import (
  "crypto/tls"
  "fmt"
  "log"

  "github.com/smallstep/certinfo"
)

func main() {
  // Connect to google.com
  cfg := tls.Config{}
  conn, err := tls.Dial("tcp", "google.com:443", &cfg)
  if err != nil {
    log.Fatalln("TLS connection failed: " + err.Error())
  }
  // Grab the last certificate in the chain
  certChain := conn.ConnectionState().PeerCertificates
  cert := certChain[len(certChain)-1]

  // Print the certificate
  result, err := certinfo.CertificateText(cert)
  if err != nil {
    log.Fatal(err)
  }
  fmt.Print(result)
}
Print a PEM-encoded certificate from a file
package main

import (
  "crypto/x509"
  "encoding/pem"
  "fmt"
  "log"
  "os"

  "github.com/smallstep/certinfo"
)

func main() {
  // Read and parse the PEM certificate file
  pemData, err := os.ReadFile("cert.pem")
  if err != nil {
    log.Fatal(err)
  }
  block, rest := pem.Decode([]byte(pemData))
  if block == nil || len(rest) > 0 {
    log.Fatal("Certificate decoding error")
  }
  cert, err := x509.ParseCertificate(block.Bytes)
  if err != nil {
    log.Fatal(err)
  }

  // Print the certificate
  result, err := certinfo.CertificateText(cert)
  if err != nil {
    log.Fatal(err)
  }
  fmt.Print(result)
}

Testing

go test github.com/smallstep/certinfo

This compares several PEM-encoded certificates with their expected outputs.

License

MIT -- see LICENSE for more information.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CertificateRequestShortText

func CertificateRequestShortText(cr *x509.CertificateRequest) (string, error)

CertificateRequestShortText returns the human-readable string representation of the given certificate request using a short and friendly format.

func CertificateRequestText

func CertificateRequestText(csr *x509.CertificateRequest) (string, error)

CertificateRequestText returns a human-readable string representation of the certificate request csr. The format is similar (but not identical) to the OpenSSL way of printing certificates.

func CertificateShortText

func CertificateShortText(cert *x509.Certificate) (string, error)

CertificateShortText returns the human-readable string representation of the given cert using a short and friendly format.

func CertificateText

func CertificateText(cert *x509.Certificate) (string, error)

CertificateText returns a human-readable string representation of the certificate cert. The format is similar (but not identical) to the OpenSSL way of printing certificates.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL