[ {rabbit, [ {tcp_listeners, [5672]}, {loopback_users, []}, {ssl_listeners, [5671]}, {ssl_options, [{cacertfile,"/etc/rabbitmq/jfg_ca.crt"}, {certfile,"/etc/rabbitmq/server.pem"}, {keyfile,"/etc/rabbitmq/server.key"}, {verify,verify_peer}, {fail_if_no_peer_cert,true}]} ]}].func getURI(mq MQConf) string { if !mq.SSL { return fmt.Sprintf("amqp://%s:%s@%s:%d/", mq.User, mq.Password, mq.IP, mq.Port) } return fmt.Sprintf("amqps://%s:%d", mq.IP, mq.SSLPort)}
func connectMQ(conf MQConf) (*amqp.Connection, *amqp.Channel, error) { var tcpConn *amqp.Connection
var err error if conf.SSL { pool := x509.NewCertPool() caCrt, err := ioutil.ReadFile(conf.CACert) if err != nil { return nil, nil, err } pool.AppendCertsFromPEM(caCrt)
cliCrt, err := tls.LoadX509KeyPair(conf.ClientCert, conf.ClientKey) if err != nil { return nil, nil, err }
tcpConn, err = amqp.DialTLS(getURI(conf), &tls.Config{ RootCAs: pool, Certificates: []tls.Certificate{cliCrt}, ServerName: "XXXX", CurvePreferences: []tls.CurveID{}, }) if err != nil { return nil, nil, err }
connect mq failed:tls: server selected unsupported curve