Skip to content

Instantly share code, notes, and snippets.

@devtdeng
Last active April 28, 2022 13:45
Show Gist options
  • Select an option

  • Save devtdeng/4f6adcb5a306f2ae035a2e7d9f724d17 to your computer and use it in GitHub Desktop.

Select an option

Save devtdeng/4f6adcb5a306f2ae035a2e7d9f724d17 to your computer and use it in GitHub Desktop.

Revisions

  1. devtdeng revised this gist Apr 11, 2018. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion verify_certificate.go
    Original file line number Diff line number Diff line change
    @@ -40,7 +40,6 @@ func main() {

    opts := x509.VerifyOptions{
    Roots: roots,
    // CurrentTime: c.config.time(),
    DNSName: serverName,
    Intermediates: x509.NewCertPool(),
    }
  2. devtdeng revised this gist Apr 11, 2018. 1 changed file with 8 additions and 3 deletions.
    11 changes: 8 additions & 3 deletions verify_certificate.go
    Original file line number Diff line number Diff line change
    @@ -9,14 +9,16 @@ import (
    )

    func main() {
    log.Printf("Usage: verify_certificate cert.pem chain.pem")
    log.Printf("Usage: verify_certificate SERVER_NAME CERT.pem CHAIN.pem")

    certPEM, err := ioutil.ReadFile(os.Args[1])
    serverName := os.Args[1]

    certPEM, err := ioutil.ReadFile(os.Args[2])
    if err != nil {
    log.Fatal(err)
    }

    rootPEM, err := ioutil.ReadFile(os.Args[2])
    rootPEM, err := ioutil.ReadFile(os.Args[3])
    if err != nil {
    log.Fatal(err)
    }
    @@ -38,6 +40,9 @@ func main() {

    opts := x509.VerifyOptions{
    Roots: roots,
    // CurrentTime: c.config.time(),
    DNSName: serverName,
    Intermediates: x509.NewCertPool(),
    }

    if _, err := cert.Verify(opts); err != nil {
  3. devtdeng created this gist Apr 11, 2018.
    48 changes: 48 additions & 0 deletions verify_certificate.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    package main

    import (
    "crypto/x509"
    "encoding/pem"
    "io/ioutil"
    "log"
    "os"
    )

    func main() {
    log.Printf("Usage: verify_certificate cert.pem chain.pem")

    certPEM, err := ioutil.ReadFile(os.Args[1])
    if err != nil {
    log.Fatal(err)
    }

    rootPEM, err := ioutil.ReadFile(os.Args[2])
    if err != nil {
    log.Fatal(err)
    }

    roots := x509.NewCertPool()
    ok := roots.AppendCertsFromPEM([]byte(rootPEM))
    if !ok {
    panic("failed to parse root certificate")
    }

    block, _ := pem.Decode([]byte(certPEM))
    if block == nil {
    panic("failed to parse certificate PEM")
    }
    cert, err := x509.ParseCertificate(block.Bytes)
    if err != nil {
    panic("failed to parse certificate: " + err.Error())
    }

    opts := x509.VerifyOptions{
    Roots: roots,
    }

    if _, err := cert.Verify(opts); err != nil {
    panic("failed to verify certificate: " + err.Error())
    }

    log.Printf("verification succeeds")
    }