add support for ssl connections
This adds preliminary support for SSL connections to a RabbitMQ server. Instead of providing two clients (QAmqpClient/QAmqpSslClient), the SSL support was directly rolled into QAmqpClient itself, providing signals/slots to deal with errors (sslErrors/ignoreSslErrors), and the ability to assign a QSslConfiguration. Travis testing for ssl support is currently disabled, pending a solution to a travis limitation for starting ssl listeners
This commit is contained in:
parent
d051f5a445
commit
31d8affc84
|
|
@ -8,7 +8,7 @@ services:
|
|||
before_install:
|
||||
- sudo pip install cpp-coveralls
|
||||
install:
|
||||
- tests/test-deps.sh
|
||||
- tests/files/travis/test-deps.sh
|
||||
script:
|
||||
- qmake -config gcov
|
||||
- make
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include <QTimer>
|
||||
#include <QTcpSocket>
|
||||
#include <QTextStream>
|
||||
#include <QStringList>
|
||||
#include <QSslSocket>
|
||||
#include <QtEndian>
|
||||
|
||||
#include "qamqpglobal.h"
|
||||
|
|
@ -21,6 +21,7 @@ QAmqpClientPrivate::QAmqpClientPrivate(QAmqpClient *q)
|
|||
autoReconnect(false),
|
||||
timeout(0),
|
||||
connecting(false),
|
||||
useSsl(false),
|
||||
socket(0),
|
||||
closed(false),
|
||||
connected(false),
|
||||
|
|
@ -50,7 +51,7 @@ void QAmqpClientPrivate::init()
|
|||
void QAmqpClientPrivate::initSocket()
|
||||
{
|
||||
Q_Q(QAmqpClient);
|
||||
socket = new QTcpSocket(q);
|
||||
socket = new QSslSocket(q);
|
||||
QObject::connect(socket, SIGNAL(connected()), q, SLOT(_q_socketConnected()));
|
||||
QObject::connect(socket, SIGNAL(disconnected()), q, SLOT(_q_socketDisconnected()));
|
||||
QObject::connect(socket, SIGNAL(readyRead()), q, SLOT(_q_readyRead()));
|
||||
|
|
@ -58,6 +59,8 @@ void QAmqpClientPrivate::initSocket()
|
|||
q, SLOT(_q_socketError(QAbstractSocket::SocketError)));
|
||||
QObject::connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
|
||||
q, SIGNAL(socketError(QAbstractSocket::SocketError)));
|
||||
QObject::connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
|
||||
q, SIGNAL(sslErrors(QList<QSslError>)));
|
||||
}
|
||||
|
||||
void QAmqpClientPrivate::setUsername(const QString &username)
|
||||
|
|
@ -87,12 +90,13 @@ void QAmqpClientPrivate::parseConnectionString(const QString &uri)
|
|||
#endif
|
||||
|
||||
if (connectionString.scheme() != AMQP_SCHEME &&
|
||||
connectionString.scheme() != AMQP_SSCHEME) {
|
||||
connectionString.scheme() != AMQP_SSL_SCHEME) {
|
||||
qAmqpDebug() << Q_FUNC_INFO << "invalid scheme: " << connectionString.scheme();
|
||||
return;
|
||||
}
|
||||
|
||||
port = connectionString.port(AMQP_PORT);
|
||||
useSsl = (connectionString.scheme() == AMQP_SSL_SCHEME);
|
||||
port = connectionString.port((useSsl ? AMQP_SSL_PORT : AMQP_PORT));
|
||||
host = connectionString.host();
|
||||
|
||||
QString vhost = connectionString.path();
|
||||
|
|
@ -116,6 +120,10 @@ void QAmqpClientPrivate::_q_connect()
|
|||
_q_disconnect();
|
||||
}
|
||||
|
||||
qAmqpDebug() << "connecting to host: " << host << ", port: " << port;
|
||||
if (useSsl)
|
||||
socket->connectToHostEncrypted(host, port);
|
||||
else
|
||||
socket->connectToHost(host, port);
|
||||
}
|
||||
|
||||
|
|
@ -777,6 +785,29 @@ QString QAmqpClient::errorString() const
|
|||
return d->errorString;
|
||||
}
|
||||
|
||||
QSslConfiguration QAmqpClient::sslConfiguration() const
|
||||
{
|
||||
Q_D(const QAmqpClient);
|
||||
return d->sslConfiguration;
|
||||
}
|
||||
|
||||
void QAmqpClient::setSslConfiguration(const QSslConfiguration &config)
|
||||
{
|
||||
Q_D(QAmqpClient);
|
||||
d->sslConfiguration = config;
|
||||
|
||||
if (!config.isNull()) {
|
||||
d->useSsl = true;
|
||||
d->port = AMQP_SSL_PORT;
|
||||
}
|
||||
}
|
||||
|
||||
void QAmqpClient::ignoreSslErrors(const QList<QSslError> &errors)
|
||||
{
|
||||
Q_D(QAmqpClient);
|
||||
d->socket->ignoreSslErrors(errors);
|
||||
}
|
||||
|
||||
void QAmqpClient::connectToHost(const QString &uri)
|
||||
{
|
||||
Q_D(QAmqpClient);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
#include <QObject>
|
||||
#include <QUrl>
|
||||
#include <QHostAddress>
|
||||
#include <QSslConfiguration>
|
||||
#include <QSslError>
|
||||
|
||||
#include "qamqpglobal.h"
|
||||
|
||||
|
|
@ -68,6 +70,9 @@ public:
|
|||
QAMQP::Error error() const;
|
||||
QString errorString() const;
|
||||
|
||||
QSslConfiguration sslConfiguration() const;
|
||||
void setSslConfiguration(const QSslConfiguration &config);
|
||||
|
||||
// channels
|
||||
QAmqpExchange *createExchange(int channelNumber = -1);
|
||||
QAmqpExchange *createExchange(const QString &name, int channelNumber = -1);
|
||||
|
|
@ -85,6 +90,10 @@ Q_SIGNALS:
|
|||
void disconnected();
|
||||
void error(QAMQP::Error error);
|
||||
void socketError(QAbstractSocket::SocketError error);
|
||||
void sslErrors(const QList<QSslError> &errors);
|
||||
|
||||
public Q_SLOTS:
|
||||
void ignoreSslErrors(const QList<QSslError> &errors);
|
||||
|
||||
protected:
|
||||
QAmqpClient(QAmqpClientPrivate *dd, QObject *parent = 0);
|
||||
|
|
|
|||
|
|
@ -5,11 +5,8 @@
|
|||
#include <QSharedPointer>
|
||||
#include <QPointer>
|
||||
#include <QAbstractSocket>
|
||||
|
||||
#ifndef QT_NO_SSL
|
||||
# include <QSslConfiguration>
|
||||
# include <QSslError>
|
||||
#endif
|
||||
#include <QSslConfiguration>
|
||||
#include <QSslError>
|
||||
|
||||
#include "qamqpglobal.h"
|
||||
#include "qamqpauthenticator.h"
|
||||
|
|
@ -19,7 +16,7 @@
|
|||
#define METHOD_ID_ENUM(name, id) name = id, name ## Ok
|
||||
|
||||
class QTimer;
|
||||
class QTcpSocket;
|
||||
class QSslSocket;
|
||||
class QAmqpClient;
|
||||
class QAmqpQueue;
|
||||
class QAmqpExchange;
|
||||
|
|
@ -85,8 +82,9 @@ public:
|
|||
bool autoReconnect;
|
||||
int timeout;
|
||||
bool connecting;
|
||||
QTcpSocket *socket;
|
||||
bool useSsl;
|
||||
|
||||
QSslSocket *socket;
|
||||
QHash<quint16, QList<QAmqpMethodFrameHandler*> > methodHandlersByChannel;
|
||||
QHash<quint16, QList<QAmqpContentFrameHandler*> > contentHandlerByChannel;
|
||||
QHash<quint16, QList<QAmqpContentBodyFrameHandler*> > bodyHandlersByChannel;
|
||||
|
|
@ -103,27 +101,11 @@ public:
|
|||
QAMQP::Error error;
|
||||
QString errorString;
|
||||
|
||||
QSslConfiguration sslConfiguration;
|
||||
|
||||
QAmqpClient * const q_ptr;
|
||||
Q_DECLARE_PUBLIC(QAmqpClient)
|
||||
|
||||
};
|
||||
|
||||
#ifndef QT_NO_SSL
|
||||
class QAmqpSslClient;
|
||||
class QAmqpSslClientPrivate : public QAmqpClientPrivate
|
||||
{
|
||||
public:
|
||||
QAmqpSslClientPrivate(QAmqpSslClient *q);
|
||||
|
||||
virtual void initSocket();
|
||||
virtual void _q_connect();
|
||||
|
||||
// private slots
|
||||
void _q_sslErrors(const QList<QSslError> &errors);
|
||||
|
||||
QSslConfiguration sslConfiguration;
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif // QAMQPCLIENT_P_H
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@
|
|||
#include <QMetaType>
|
||||
|
||||
#define AMQP_SCHEME "amqp"
|
||||
#define AMQP_SSCHEME "amqps"
|
||||
#define AMQP_SSL_SCHEME "amqps"
|
||||
#define AMQP_PORT 5672
|
||||
#define AMQP_SSL_PORT 5671
|
||||
#define AMQP_HOST "localhost"
|
||||
#define AMQP_VHOST "/"
|
||||
#define AMQP_LOGIN "guest"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
<RCC>
|
||||
<qresource prefix="/certs">
|
||||
<file alias="ca-cert.pem">../../files/certs/testca/cacert.pem</file>
|
||||
<file alias="client-cert.pem">../../files/certs/client/cert.pem</file>
|
||||
<file alias="client-key.pem">../../files/certs/client/key.pem</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
@ -4,3 +4,4 @@ include($${DEPTH}/tests/tests.pri)
|
|||
|
||||
TARGET = tst_qamqpclient
|
||||
SOURCES = tst_qamqpclient.cpp
|
||||
RESOURCES = certs.qrc
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
#include <QtTest/QtTest>
|
||||
#include "qamqptestcase.h"
|
||||
|
||||
#include <QProcess>
|
||||
#include "qamqpclient.h"
|
||||
#include "qamqpclient_p.h"
|
||||
#include <QSslKey>
|
||||
|
||||
#include "qamqptestcase.h"
|
||||
#include "qamqpauthenticator.h"
|
||||
#include "qamqpclient_p.h"
|
||||
#include "qamqpclient.h"
|
||||
|
||||
class tst_QAMQPClient : public TestCase
|
||||
{
|
||||
|
|
@ -20,11 +21,34 @@ private Q_SLOTS:
|
|||
void validateUri_data();
|
||||
void validateUri();
|
||||
|
||||
private:
|
||||
public Q_SLOTS: // temporarily disabled
|
||||
void autoReconnect();
|
||||
void sslConnect();
|
||||
|
||||
private:
|
||||
QSslConfiguration createSslConfiguration();
|
||||
|
||||
};
|
||||
|
||||
QSslConfiguration tst_QAMQPClient::createSslConfiguration()
|
||||
{
|
||||
QList<QSslCertificate> caCerts =
|
||||
QSslCertificate::fromPath(QLatin1String(":/certs/ca-cert.pem"));
|
||||
QList<QSslCertificate> localCerts =
|
||||
QSslCertificate::fromPath(QLatin1String(":/certs/client-cert.pem"));
|
||||
QFile keyFile( QLatin1String(":/certs/client-key.pem"));
|
||||
keyFile.open(QIODevice::ReadOnly);
|
||||
QSslKey key(&keyFile, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
|
||||
keyFile.close();
|
||||
|
||||
QSslConfiguration sslConfiguration;
|
||||
sslConfiguration.setCaCertificates(caCerts);
|
||||
sslConfiguration.setLocalCertificate(localCerts.first());
|
||||
sslConfiguration.setPrivateKey(key);
|
||||
sslConfiguration.setProtocol(QSsl::SecureProtocols);
|
||||
return sslConfiguration;
|
||||
}
|
||||
|
||||
void tst_QAMQPClient::connect()
|
||||
{
|
||||
QAmqpClient client;
|
||||
|
|
@ -42,6 +66,17 @@ void tst_QAMQPClient::connect()
|
|||
QVERIFY(waitForSignal(&client, SIGNAL(disconnected())));
|
||||
}
|
||||
|
||||
void tst_QAMQPClient::sslConnect()
|
||||
{
|
||||
QAmqpClient client;
|
||||
client.setSslConfiguration(createSslConfiguration());
|
||||
QObject::connect(&client, SIGNAL(sslErrors(QList<QSslError>)),
|
||||
&client, SLOT(ignoreSslErrors(QList<QSslError>)));
|
||||
|
||||
client.connectToHost();
|
||||
QVERIFY(waitForSignal(&client, SIGNAL(connected())));
|
||||
}
|
||||
|
||||
void tst_QAMQPClient::connectProperties()
|
||||
{
|
||||
QAmqpClient client;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAc+gAwIBAgIBAjANBgkqhkiG9w0BAQUFADATMREwDwYDVQQDEwhNeVRl
|
||||
c3RDQTAeFw0xNDA4MjcxOTI2MDVaFw0xNTA4MjcxOTI2MDVaMCoxFzAVBgNVBAMM
|
||||
Dm1icm9hZHN0LWJ1aWxkMQ8wDQYDVQQKDAZjbGllbnQwggEiMA0GCSqGSIb3DQEB
|
||||
AQUAA4IBDwAwggEKAoIBAQDrzmzjgxNXxXX+fgfjB5Pt+YbO2uQR9PDADUyk+8Kw
|
||||
/v1xjZBqKSHaBJLMv2nHlfGM8p92XQoepWKtG4z49UsT6MMppfUnZ/TO6LgUuJtw
|
||||
FaVYdJmzK8SPvsQ331id9f4grgMTiff+i6hM2Bb9Jq83/jnglrBm8T4KHjPjJXQi
|
||||
MN8d7ZkV2bo2vFQcO/KNTODntqINp5+OFPboyjDbMoMgUTqnXJBQsWwA9EVq2JYs
|
||||
FYtA5xsqk0yG9DBgI5ClfxESQQo6lHKYeX2KIuHVO5awPpm+wZbIeR3l5QFqQrQZ
|
||||
zfw7ANsA1RK4c85jb8K0vHxX1wV3kB+2kqpi4jxm/ucnAgMBAAGjLzAtMAkGA1Ud
|
||||
EwQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3
|
||||
DQEBBQUAA4IBAQAxoTOMViXAKveeYx7I0dve/Te3TXe6XTlF0iFNIMp0FB3X0OeA
|
||||
Bjknf6SUxY4qYV9DsFBGtXg8irkbothVNQKrhSedb6n+OQGy5z24oJ+vWW5jCyf3
|
||||
TBoWRLnHY52j/4KElNpbEddacreYY6Ft5VYLZuyXy2G18xWjUnE5EG+QkizgAWzw
|
||||
w9aTxS7qyGb7/FklJhH5OA8izi4JNbIrLEcUw4ECgYihtdLnZz/ANTp4kwz7qjaj
|
||||
X7+8V3h7R59/HOHglCbjtkhBVuRyz5ljTfMbCava4Za2solujAo4tRxvmhioog0t
|
||||
QplQjUP4QM5jfFlD/1HXY2SzYPG0FIiRj93L
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEA685s44MTV8V1/n4H4weT7fmGztrkEfTwwA1MpPvCsP79cY2Q
|
||||
aikh2gSSzL9px5XxjPKfdl0KHqVirRuM+PVLE+jDKaX1J2f0zui4FLibcBWlWHSZ
|
||||
syvEj77EN99YnfX+IK4DE4n3/ouoTNgW/SavN/454JawZvE+Ch4z4yV0IjDfHe2Z
|
||||
Fdm6NrxUHDvyjUzg57aiDaefjhT26Mow2zKDIFE6p1yQULFsAPRFatiWLBWLQOcb
|
||||
KpNMhvQwYCOQpX8REkEKOpRymHl9iiLh1TuWsD6ZvsGWyHkd5eUBakK0Gc38OwDb
|
||||
ANUSuHPOY2/CtLx8V9cFd5AftpKqYuI8Zv7nJwIDAQABAoIBAQDj32PSqIQ0uZlB
|
||||
CcHNXzFRM2VW2Ki1waI1taRveuu153Q8G7WHIaCY8vp56i/qs7ftoTkARQDWhLRK
|
||||
3OjqXQDkiHaw9LNoFUm5+aKKQ6vSMNjMFkHBp3YYAx3TcH5Oh73BDufiJd4FmihV
|
||||
uizdDlkdHwwHQRfPIyn01SMHStZjgkOqIOkKq1Me8uggiYpTh/2sbX931cwxJnSF
|
||||
EvDOLTvLjJdj6aWjupUaMvMsZDHJdtTZxl/YPV/KO49EkaOz0Ijv4mD8a0FQ5QRa
|
||||
ud1xITFlFXOeZNjH3n6/+4ypIJDkXddpfZUuetoZ3DPRZY5aalKW+SGy3zqLu8qh
|
||||
0VGPRQ7BAoGBAP7xNXis1ErCybdI1wvo3XIcsq7YHsssD+2IFmNomdBF5e9QzAwU
|
||||
Q63WD6qmcLCSzjSm4dYZNvFL9RLWUCIkC7nkpqt0bftDw//NTdyinJo/JNf4Lprx
|
||||
uji5njju+FuU83Whu3QoBXFTv7Ql09bX/6EgCfx1cWrJEHC6L3oGE3SpAoGBAOzI
|
||||
5BfC+5TTbqWbjoH8ycdpjbEvyhpRKT920spa2j0kNjduryJHtq1AemLsR9NOH67h
|
||||
cO5YHD9ClRMXxI4ogVbzOGqVAy3LdYXCJIV8GO/WTjjDINoPNb2+VfaHCkboS+8y
|
||||
d1HwwcFbK7p3dJFNF3ppDVXsTfZZzDAQfFqa6A9PAoGAPzmYtjW+bFAEcJT65/Q3
|
||||
Pv6I/b2RXXeu94yBaOPfCXzcOk6CXBiGdE0bE4o1dkTiKMKeTVdxfcQFokdOFjl0
|
||||
QwTGpMy6Hc8/g2fqAGa/ia1RONJO1JRQR5MY/yucojG9cxXKBFOMjf9kEowzDhwB
|
||||
RHdKoraJix8UGbDC53MsTgkCgYBepze23/Td219ByFtBTyICGwnPKMFrn8ITYpaE
|
||||
2aigBFe/9PkBhRVbUIkb/kQADhzQNcKFJKe2ChG5niiugzag4X1N7d9lcQ27uI4M
|
||||
5jy5szt1qVr6kFX1UZ7fe7/59GZWaiAUm194wc9LLPFmHCEkh9YS4PGRZvgexphP
|
||||
R9k4NQKBgQDXYokjEt6jl67724/J8gP09oTAxZCBSweZkTHErUg8NdsUJWqBGLP9
|
||||
zFg1pOfAV9gy/qKm01SdG81lWcf8sDLa3QjB4WOW6x99DH2mQ7y69tStn8B3mAVB
|
||||
o8Ddf50gjv54oSqFPrF1DAbBXWOEWfeLM44zyaBR9t28bNBJM4CEiQ==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
Binary file not shown.
|
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICbzCCAVcCAQAwKjEXMBUGA1UEAwwObWJyb2Fkc3QtYnVpbGQxDzANBgNVBAoM
|
||||
BmNsaWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOvObOODE1fF
|
||||
df5+B+MHk+35hs7a5BH08MANTKT7wrD+/XGNkGopIdoEksy/aceV8Yzyn3ZdCh6l
|
||||
Yq0bjPj1SxPowyml9Sdn9M7ouBS4m3AVpVh0mbMrxI++xDffWJ31/iCuAxOJ9/6L
|
||||
qEzYFv0mrzf+OeCWsGbxPgoeM+MldCIw3x3tmRXZuja8VBw78o1M4Oe2og2nn44U
|
||||
9ujKMNsygyBROqdckFCxbAD0RWrYliwVi0DnGyqTTIb0MGAjkKV/ERJBCjqUcph5
|
||||
fYoi4dU7lrA+mb7Blsh5HeXlAWpCtBnN/DsA2wDVErhzzmNvwrS8fFfXBXeQH7aS
|
||||
qmLiPGb+5ycCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQAyDAY1l3GDSkLXOKId
|
||||
GM0sB0Ve7tT64IsqFacp29wV15fgJH1368VOMwxiXRQVSvGQGWog0JzuX0qH12ZZ
|
||||
+6zQnGhumuKtoqfwlPBFNtvFRFxQ61Dzk6RZaO5fC7ZW+cLrfcEjTh9X3ts2POwP
|
||||
/iuFdr+r+422YDOmHY3gNKBYKg8MtaDUNSLSiwNEQ/CPNs3FsyObHutiMPgIKwqt
|
||||
vZ2hkvvMWcYPf2dtPTS3AfMPWVP+zR4eDfeiKYoxCyYZHsvQEyYqP5P5U1elqia1
|
||||
gR9WUuC6Li+7wju6ksFrrLKGPNDXvfOm3Ecqfc5JPgU+U4bJLFRT1CFEOuYRnViK
|
||||
V/jK
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAc+gAwIBAgIBATANBgkqhkiG9w0BAQUFADATMREwDwYDVQQDEwhNeVRl
|
||||
c3RDQTAeFw0xNDA4MjcxOTI0MjNaFw0xNTA4MjcxOTI0MjNaMCoxFzAVBgNVBAMM
|
||||
Dm1icm9hZHN0LWJ1aWxkMQ8wDQYDVQQKDAZzZXJ2ZXIwggEiMA0GCSqGSIb3DQEB
|
||||
AQUAA4IBDwAwggEKAoIBAQDDV2SFR4wdqcGTJjXoxufcRcg1QPBrsglR2rvQL40i
|
||||
oF9U9QAASwtn5c1+A5pkEdOb6xOrND/qiCW1jQgBKzi9qMnL9+61Z/Xykq5Op4qj
|
||||
oqf1l6DV5nyHo9DOmqMKlBUGFR1PvwRcxmtl76+ekLxRP3Z38YbJHj1FT2H/9Dno
|
||||
ThoImcxiSeMI1T7yBfv5SZ4TVheRIabkRcwT5FrU3P6TkVJq2PBjH4n6cNlLAMka
|
||||
Ias4Jnxip4Xg/kk9JXlfce45EAMlgEpp/6zSYQqvpESo/2elElP39sFBPvv7HNIh
|
||||
si7AKzIsFlEpsUFlcBkC1SD9jxV2xVbXZssCiX3ZM5F1AgMBAAGjLzAtMAkGA1Ud
|
||||
EwQCMAAwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3
|
||||
DQEBBQUAA4IBAQCHXuSqK4vEDNIqZxMQiFqB4zwkz5KG3uZrbhqfHaqxxjinwlNJ
|
||||
Sky9lAx2QN/sRDuk8M+8HZxRMsASIPzELMjjj19CduadkLFV4cj+0nP2m6K1li8y
|
||||
RyGQpEwQi5MG2o+iQt3Ygw07KQJYhOXaifjEFJ8Q1U00KO+e9H7iLF8GrhLzmOv3
|
||||
usLPIvE8dnNu+EkrC57c48g9vkzR+BWl4TA1TcJBy9r219Z4jGrIysPWJUPwhKJj
|
||||
tf9Uk9oHbMkuv5Qc+NhCumkB82phIt5WxeL1mKgwKVxiZJ+4DysfD7cgni8jhq86
|
||||
KZgEOMel6CekBa7ToLzUdvjU0SjT2DBBK6YD
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEogIBAAKCAQEAw1dkhUeMHanBkyY16Mbn3EXINUDwa7IJUdq70C+NIqBfVPUA
|
||||
AEsLZ+XNfgOaZBHTm+sTqzQ/6ogltY0IASs4vajJy/futWf18pKuTqeKo6Kn9Zeg
|
||||
1eZ8h6PQzpqjCpQVBhUdT78EXMZrZe+vnpC8UT92d/GGyR49RU9h//Q56E4aCJnM
|
||||
YknjCNU+8gX7+UmeE1YXkSGm5EXME+Ra1Nz+k5FSatjwYx+J+nDZSwDJGiGrOCZ8
|
||||
YqeF4P5JPSV5X3HuORADJYBKaf+s0mEKr6REqP9npRJT9/bBQT77+xzSIbIuwCsy
|
||||
LBZRKbFBZXAZAtUg/Y8VdsVW12bLAol92TORdQIDAQABAoIBAFKRwEWuBoYLWW2P
|
||||
uz3Xxe4P+R65gmajbNkSsky/rNK0I1fP794v2nRiaMgZUct21ZGUfk3h2hqSzg29
|
||||
vWJxGJzimdoDxP0dIpMUeWV54FpmyMRBAZUoxf63ue164+v2yCQ4DJnGzltA6+i8
|
||||
tek6mL9nKfZtO2ILzC5d7bi5TTjp/SXUiKG3VAFSxgxoBC9PGlL7BNFbm9JXSket
|
||||
LVIWNj781pqBMEHvj9aLVG0uKpkY5jRjShHQ1a1v3l/WSDBsoVaG8xzvZSE5wd7s
|
||||
Fjzk53siyzapOBhTCJc8NFoA88SfYYQfxCVrhIxpDhH6rYBMi/j99DTlj+Goi6eo
|
||||
7aqEkwECgYEA7YwtwqGtPbakc5Y6shmLyniDah8xaVfrK4duGBvuoZCMek+ee2DN
|
||||
WaeUKcSBBL0wWGVxnTm5MHleeadc92vF8eI/T7LKDnqPGfg9I9nteI43wCuRqKbz
|
||||
YDseZnngBWFM6QnhYJrL1mH66zTAolaW8e+4U0ZsNO/Wk3RP8FrZDFUCgYEA0oPp
|
||||
DIW+6i43dC9AOKxPv6lWdYOHnnh050WftR3sYfQ5FEqLln0jbio1WvaukQtPeruz
|
||||
WhhAYbrkSjy1286NMjkhO3FbofiUkTgpI9YSubIchbGcem9G58IfhA41mAGzrGer
|
||||
t65ip6f2jwOZkRM+t5/65iqQuGoCIWlnBpO3kKECgYB6mX6ElSz0TO9TOJXSlZyw
|
||||
QsKQYsj9tYKKVLtddg0TFadq+OyygKN7QiIV7HUqHPp2pOSeYMxTWFCKOPaiO91N
|
||||
mZdTatMd5eM1ZAkqF6+YKM5dQB9NC91QLTLjcMNOA4nOPGs1kK7jVm5KNk+1eTsu
|
||||
YqqfUBlIuP/l2oHnavvagQKBgFPIYiE0vbXwLOvVvmaP1bF/EMT2Uyxz3nsJD7YC
|
||||
sciObYUw4ftD1K0MqW2JjhJ2AOzk9U2fJ0h+HEube/l+bF2XtS02QXTmPSLKyjzT
|
||||
/2HejFF9TbzAuuSUMvzYtuXHj53HKOWSxvrY810Z3q2JjkWAq1edizmKH0zy6SkJ
|
||||
813hAoGAIGMMqi8HsqsvgTQebYohwkRBG+G+JPVF6rPD/+WfglnIoo4sNWNBnh6Z
|
||||
e/+TkLsZR0QVnbQtStabroxxCkBkjzoDgu2Ff2mKhcFMsuNwWm/2hWHD8VLMomWi
|
||||
7BK4OjVcBxOoQelmBEuwIaCiuADZBFgGEbV5yBdv8yD+ewUP/Z0=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
Binary file not shown.
|
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICbzCCAVcCAQAwKjEXMBUGA1UEAwwObWJyb2Fkc3QtYnVpbGQxDzANBgNVBAoM
|
||||
BnNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMNXZIVHjB2p
|
||||
wZMmNejG59xFyDVA8GuyCVHau9AvjSKgX1T1AABLC2flzX4DmmQR05vrE6s0P+qI
|
||||
JbWNCAErOL2oycv37rVn9fKSrk6niqOip/WXoNXmfIej0M6aowqUFQYVHU+/BFzG
|
||||
a2Xvr56QvFE/dnfxhskePUVPYf/0OehOGgiZzGJJ4wjVPvIF+/lJnhNWF5EhpuRF
|
||||
zBPkWtTc/pORUmrY8GMfifpw2UsAyRohqzgmfGKnheD+ST0leV9x7jkQAyWASmn/
|
||||
rNJhCq+kRKj/Z6USU/f2wUE++/sc0iGyLsArMiwWUSmxQWVwGQLVIP2PFXbFVtdm
|
||||
ywKJfdkzkXUCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQB3B0Rve1QC6ygBlbFj
|
||||
jYSwmyIID3OYuF4RvXGIzCQsh8+aJYWe4dMUcqRLlr13PmWQlle5v5F3x903Y5QN
|
||||
IeQudApEelqJMI0QLOKALZWgX5YjF+z0AW/yhAu3QufEsERG4T5x2BJVKcrSIewl
|
||||
ang2Hr4isGmlXS/VVPYa0K50lv7GgHsCookOSS52/MA7r5f48EmJeC2JO0sKKKkf
|
||||
sMY9urBAIeGYNvXw/JuswlnfMpuUGEBoGnByc+3SecXiHGaUBn3xXSsbL+Ht8x9D
|
||||
Sa0gyGqelTqxhcOU0YcvorxIPb6Jbms2J8GEmeq25vMlRTlDKJV01F7PMo/1reXU
|
||||
KEn6
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
Binary file not shown.
|
|
@ -0,0 +1,17 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIICxjCCAa6gAwIBAgIJAOZK1btq1p0yMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
|
||||
BAMTCE15VGVzdENBMB4XDTE0MDgyNzE5MjI0MloXDTE1MDgyNzE5MjI0MlowEzER
|
||||
MA8GA1UEAxMITXlUZXN0Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
||||
AQC/T4RhynLiTGkcgfq6TVwKVtvRy2jAOFOG7p9g4NofVTa0HvEUjNITwPUrYQDa
|
||||
OLSK6BtStss1aTeSDfkY9wejl1PZ02lgz2CeznOvWp/74Rz8Mjc7BGz3WFOqcfJt
|
||||
6DyTj/wgE/lJXTVGXsojQtDChYwEPNSWmAXLz1nLj2Ac1B4uy5kVsBCXkhWcu4E8
|
||||
xEaf6mIA9KvF1MWBgHkNbZ2DruYsdlA4h95+40wn2qDkm9RgmE2MyFjV8YYjwv2s
|
||||
5G48+pj7o7Vg/3/QZFuoGnU8GJ4gFFVOQQRqKOUrVFrJGduiVXxqPNjTt1rfopX4
|
||||
pC8GZ69NotARfrwlBflM+Dm/AgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0P
|
||||
BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAJxWhxMpYywwJOkB243RhD76Y9OJ0q
|
||||
RAboh03wrHpx5jgRZj4PxJrMdoDop/7mP9e/2UfIWVkVzKGH3ZPSrDaJ7bRooqgu
|
||||
nR1T8yWm+/zDoKoZGl+pdc25rr+PcWbzXOuPZTukSM01AqgGuwmiRB70HzqJpV3u
|
||||
IPLvkvrqUIcjpdi7ULmfB1caNzTMizviTK7b3ORG+pZUVMRmOzSkJOD1PoNXg7GQ
|
||||
p5FisMP7ULL0RLtOMrqwwyCslMJ+8g9pJuCqNJEeoBQsh/lmEZANWTSYTPRIbQAM
|
||||
cnhx6GDsER2zvDoTLLM4SXqWEXHsV5D06Z41fKXIDSgsSZVnzb6ZWxvd
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAc+gAwIBAgIBATANBgkqhkiG9w0BAQUFADATMREwDwYDVQQDEwhNeVRl
|
||||
c3RDQTAeFw0xNDA4MjcxOTI0MjNaFw0xNTA4MjcxOTI0MjNaMCoxFzAVBgNVBAMM
|
||||
Dm1icm9hZHN0LWJ1aWxkMQ8wDQYDVQQKDAZzZXJ2ZXIwggEiMA0GCSqGSIb3DQEB
|
||||
AQUAA4IBDwAwggEKAoIBAQDDV2SFR4wdqcGTJjXoxufcRcg1QPBrsglR2rvQL40i
|
||||
oF9U9QAASwtn5c1+A5pkEdOb6xOrND/qiCW1jQgBKzi9qMnL9+61Z/Xykq5Op4qj
|
||||
oqf1l6DV5nyHo9DOmqMKlBUGFR1PvwRcxmtl76+ekLxRP3Z38YbJHj1FT2H/9Dno
|
||||
ThoImcxiSeMI1T7yBfv5SZ4TVheRIabkRcwT5FrU3P6TkVJq2PBjH4n6cNlLAMka
|
||||
Ias4Jnxip4Xg/kk9JXlfce45EAMlgEpp/6zSYQqvpESo/2elElP39sFBPvv7HNIh
|
||||
si7AKzIsFlEpsUFlcBkC1SD9jxV2xVbXZssCiX3ZM5F1AgMBAAGjLzAtMAkGA1Ud
|
||||
EwQCMAAwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3
|
||||
DQEBBQUAA4IBAQCHXuSqK4vEDNIqZxMQiFqB4zwkz5KG3uZrbhqfHaqxxjinwlNJ
|
||||
Sky9lAx2QN/sRDuk8M+8HZxRMsASIPzELMjjj19CduadkLFV4cj+0nP2m6K1li8y
|
||||
RyGQpEwQi5MG2o+iQt3Ygw07KQJYhOXaifjEFJ8Q1U00KO+e9H7iLF8GrhLzmOv3
|
||||
usLPIvE8dnNu+EkrC57c48g9vkzR+BWl4TA1TcJBy9r219Z4jGrIysPWJUPwhKJj
|
||||
tf9Uk9oHbMkuv5Qc+NhCumkB82phIt5WxeL1mKgwKVxiZJ+4DysfD7cgni8jhq86
|
||||
KZgEOMel6CekBa7ToLzUdvjU0SjT2DBBK6YD
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAc+gAwIBAgIBAjANBgkqhkiG9w0BAQUFADATMREwDwYDVQQDEwhNeVRl
|
||||
c3RDQTAeFw0xNDA4MjcxOTI2MDVaFw0xNTA4MjcxOTI2MDVaMCoxFzAVBgNVBAMM
|
||||
Dm1icm9hZHN0LWJ1aWxkMQ8wDQYDVQQKDAZjbGllbnQwggEiMA0GCSqGSIb3DQEB
|
||||
AQUAA4IBDwAwggEKAoIBAQDrzmzjgxNXxXX+fgfjB5Pt+YbO2uQR9PDADUyk+8Kw
|
||||
/v1xjZBqKSHaBJLMv2nHlfGM8p92XQoepWKtG4z49UsT6MMppfUnZ/TO6LgUuJtw
|
||||
FaVYdJmzK8SPvsQ331id9f4grgMTiff+i6hM2Bb9Jq83/jnglrBm8T4KHjPjJXQi
|
||||
MN8d7ZkV2bo2vFQcO/KNTODntqINp5+OFPboyjDbMoMgUTqnXJBQsWwA9EVq2JYs
|
||||
FYtA5xsqk0yG9DBgI5ClfxESQQo6lHKYeX2KIuHVO5awPpm+wZbIeR3l5QFqQrQZ
|
||||
zfw7ANsA1RK4c85jb8K0vHxX1wV3kB+2kqpi4jxm/ucnAgMBAAGjLzAtMAkGA1Ud
|
||||
EwQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3
|
||||
DQEBBQUAA4IBAQAxoTOMViXAKveeYx7I0dve/Te3TXe6XTlF0iFNIMp0FB3X0OeA
|
||||
Bjknf6SUxY4qYV9DsFBGtXg8irkbothVNQKrhSedb6n+OQGy5z24oJ+vWW5jCyf3
|
||||
TBoWRLnHY52j/4KElNpbEddacreYY6Ft5VYLZuyXy2G18xWjUnE5EG+QkizgAWzw
|
||||
w9aTxS7qyGb7/FklJhH5OA8izi4JNbIrLEcUw4ECgYihtdLnZz/ANTp4kwz7qjaj
|
||||
X7+8V3h7R59/HOHglCbjtkhBVuRyz5ljTfMbCava4Za2solujAo4tRxvmhioog0t
|
||||
QplQjUP4QM5jfFlD/1HXY2SzYPG0FIiRj93L
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
V 150827192423Z 01 unknown /CN=mbroadst-build/O=server
|
||||
V 150827192605Z 02 unknown /CN=mbroadst-build/O=client
|
||||
|
|
@ -0,0 +1 @@
|
|||
unique_subject = yes
|
||||
|
|
@ -0,0 +1 @@
|
|||
unique_subject = yes
|
||||
|
|
@ -0,0 +1 @@
|
|||
V 150827192423Z 01 unknown /CN=mbroadst-build/O=server
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
[ ca ]
|
||||
default_ca = testca
|
||||
|
||||
[ testca ]
|
||||
dir = .
|
||||
certificate = $dir/cacert.pem
|
||||
database = $dir/index.txt
|
||||
new_certs_dir = $dir/certs
|
||||
private_key = $dir/private/cakey.pem
|
||||
serial = $dir/serial
|
||||
|
||||
default_crl_days = 7
|
||||
default_days = 365
|
||||
default_md = sha1
|
||||
|
||||
policy = testca_policy
|
||||
x509_extensions = certificate_extensions
|
||||
|
||||
[ testca_policy ]
|
||||
commonName = supplied
|
||||
stateOrProvinceName = optional
|
||||
countryName = optional
|
||||
emailAddress = optional
|
||||
organizationName = optional
|
||||
organizationalUnitName = optional
|
||||
|
||||
[ certificate_extensions ]
|
||||
basicConstraints = CA:false
|
||||
|
||||
[ req ]
|
||||
default_bits = 2048
|
||||
default_keyfile = ./private/cakey.pem
|
||||
default_md = sha1
|
||||
prompt = yes
|
||||
distinguished_name = root_ca_distinguished_name
|
||||
x509_extensions = root_ca_extensions
|
||||
|
||||
[ root_ca_distinguished_name ]
|
||||
commonName = hostname
|
||||
|
||||
[ root_ca_extensions ]
|
||||
basicConstraints = CA:true
|
||||
keyUsage = keyCertSign, cRLSign
|
||||
|
||||
[ client_ca_extensions ]
|
||||
basicConstraints = CA:false
|
||||
keyUsage = digitalSignature
|
||||
extendedKeyUsage = 1.3.6.1.5.5.7.3.2
|
||||
|
||||
[ server_ca_extensions ]
|
||||
basicConstraints = CA:false
|
||||
keyUsage = keyEncipherment
|
||||
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC/T4RhynLiTGkc
|
||||
gfq6TVwKVtvRy2jAOFOG7p9g4NofVTa0HvEUjNITwPUrYQDaOLSK6BtStss1aTeS
|
||||
DfkY9wejl1PZ02lgz2CeznOvWp/74Rz8Mjc7BGz3WFOqcfJt6DyTj/wgE/lJXTVG
|
||||
XsojQtDChYwEPNSWmAXLz1nLj2Ac1B4uy5kVsBCXkhWcu4E8xEaf6mIA9KvF1MWB
|
||||
gHkNbZ2DruYsdlA4h95+40wn2qDkm9RgmE2MyFjV8YYjwv2s5G48+pj7o7Vg/3/Q
|
||||
ZFuoGnU8GJ4gFFVOQQRqKOUrVFrJGduiVXxqPNjTt1rfopX4pC8GZ69NotARfrwl
|
||||
BflM+Dm/AgMBAAECggEAUGYEhmxkN4JRMi/VxPG52oaCPvqy/QUu5SfnRvl38W8I
|
||||
XE4clrxPlQmkfyR3DT6DcVT2Fp7Ha5zaQ8EnjDxUs4VnMcXNJWhBfLvaljkJvvru
|
||||
CXa5C05i1NgD4T+d2F6fBoyeMoTyYMiRGQ/A92ye+wDQxP8jgF5HIU30uL16cOJh
|
||||
/Znu6JJBjYgE9g7ce8REEpi2Fru2Ixj147ge1ICW801i0Xy5susCJvH3I817GKoq
|
||||
NonAn5P+5zTv9mECDnNkhRViATigrQ8DYikNewPknrmfb0IMAvF8dTnCWI4KuorD
|
||||
c4TD7w/zzrpncWNCnsDgWfgq9u9Anp6bvhED0VLiMQKBgQDgewv8skGmm4xAUKdR
|
||||
BsDYIUgip57qj4EmPkjypn8lzVjDUnbBhr/NAUQK5pKnrzFE2H9/H7M1zlNwk1FS
|
||||
m6GYjx4DmnGAvQ0LCBs4gxlT878n7TYTxkTge69tYQ0lmmAGGajmv2G4TtVADMlG
|
||||
rojrQIYoSggVkUI+AyGhHhm8xQKBgQDaLCyBUSWPOMc33AozWMm2OYJ4nFWd1A0C
|
||||
SLgpR6/+D8mT3o6YRYIMmh6AUFCENAKitbKujQOaKRll5aaNWO4JohhgcuzGEj5C
|
||||
4F++7SXd6E/1+gtExnOHkPJ9z3FIeSoGCDK3DmfE8H9fcMM5mFZG7OVna3arINv4
|
||||
nT8s3aAMswKBgQDDM5yn3+Zg17AtGTV1qxa0mrRclkAFnkZjGBRdFNVJ7Pf72VC1
|
||||
VtSgkzI0/G2Y7So9wLmVtN4ksscyBJjZ6cWqoQErhvieR0b5SdJJ4Q58R1/5ezfk
|
||||
GCw6vLM+vP8urMBFbbjG9rMmDz83FCdOlGUxlQlULZQ8FPVycUykC0W8NQKBgEjA
|
||||
fj7JLnsp9dS8vXIN44Wue8F4cFxm/8eJNFAfpaJU5WU3y9kfJJTLN+yV26OaLF7R
|
||||
tDncsBzSI7QE9psf0pDHytUuvaH3J2fppkPmlMAA3dkqfmN6wb+tKA+oAyCltsu4
|
||||
JCFC3nufrvnGgnNMR0jzajQoc7PxCylGVnDBnsNdAoGAV62Nc+T6HdZa9yDSPU5p
|
||||
bNT40q0iZHmTUa6QQl+ZsRZP8u4w+RnfcUOK+QKJr43DraJgjWtwbO2VnCIMTA21
|
||||
EsSGuOCEMuYLMkswOrAJfM80FalsF3I74s5TbGYaczXXOe54XZJ8tyWSP0IiwreO
|
||||
+eejI2bW3rU9TfBDdpR5Ks8=
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1 @@
|
|||
03
|
||||
|
|
@ -0,0 +1 @@
|
|||
02
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "[
|
||||
{rabbit, [
|
||||
{ssl_listeners, [5671]},
|
||||
{ssl_options, [{cacertfile,'${TRAVIS_BUILD_DIR}/tests/files/certs/testca/cacert.pem'},
|
||||
{certfile,'${TRAVIS_BUILD_DIR}/tests/files/certs/server/cert.pem'},
|
||||
{keyfile, '${TRAVIS_BUILD_DIR}/tests/files/certs/server/key.pem'},
|
||||
{verify,verify_peer},
|
||||
{fail_if_no_peer_cert,false}]}
|
||||
]}
|
||||
]." >> rabbitmq.config
|
||||
|
||||
sudo CONFIG_FILE=$PWD RABBITMQ_NODENAME=test-rabbitmq rabbitmq-server -detached
|
||||
Loading…
Reference in New Issue