Skip to content

Instantly share code, notes, and snippets.

@fpawel
Last active July 11, 2020 08:48
Show Gist options
  • Save fpawel/bb40833f6226a598354521e3d96a6605 to your computer and use it in GitHub Desktop.
Save fpawel/bb40833f6226a598354521e3d96a6605 to your computer and use it in GitHub Desktop.
amqp pkcs12
// copy this file to any place
// set environment variables:
// AMQP_URL
// AMQP_CERT_FILE
// AMQP_CERT_PASS
// type:
// go mod init
// go run .
// it should print "ok" if ok, otherwise an error message
package main
import (
"crypto/tls"
"crypto/x509"
"encoding/pem"
"github.com/fpawel/go-pkcs12"
"github.com/streadway/amqp"
"io/ioutil"
"log"
"os"
)
func main() {
if err := testAMQP(); err != nil {
log.Fatal(err)
}
log.Println("ok")
}
func testAMQP() error{
p12, err := ioutil.ReadFile(os.Getenv("AMQP_CERT_FILE"))
if err != nil {
return err
}
blocks, err := pkcs12.ToPEM(p12, os.Getenv("AMQP_CERT_PASS"))
if err != nil {
return err
}
var pemData []byte
for _, b := range blocks {
pemData = append(pemData, pem.EncodeToMemory(b)...)
}
cert, err := tls.X509KeyPair(pemData, pemData)
if err != nil {
return err
}
cfg := new(tls.Config)
cfg.RootCAs = x509.NewCertPool()
cfg.Certificates = [] tls.Certificate{cert}
cfg.InsecureSkipVerify = true
conn, err := amqp.DialTLS(os.Getenv("AMQP_URL"), cfg)
if err != nil {
return err
}
defer conn.Close()
ch, err := conn.Channel()
if err != nil {
return err
}
ch.Close()
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment