summaryrefslogtreecommitdiff
path: root/cpp/SSL
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/SSL')
-rw-r--r--cpp/SSL131
1 files changed, 0 insertions, 131 deletions
diff --git a/cpp/SSL b/cpp/SSL
deleted file mode 100644
index b810d4ef10..0000000000
--- a/cpp/SSL
+++ /dev/null
@@ -1,131 +0,0 @@
- Using SSL
- =========
-
-The implementation and use of SSL has some differences on Linux and
-on Windows.
-
-Linux
-=====
-
-SSL support for Qpid-C++, based on Mozilla's Network Security Services
-library, is provided as two loadable modules: one for the client
-(sslconnector.so), one for the broker (ssl.so). Either these libraries
-should be present in the relevant module directory or the
-'load-module' option (or QPID_LOAD_MODULE environment variable) is
-used to ensure they are loaded.
-
-Broker side SSL Settings (note you can get these by qpidd --help
-providing the ssl.so module is loaded):
-
-SSL Settings:
- --ssl-use-export-policy Use NSS export policy
- --ssl-cert-password-file PATH File containing password to use for accessing
- certificate database
- --ssl-cert-db PATH Path to directory containing certificate
- database
- --ssl-cert-name NAME (hostname) Name of the certificate to use
- --ssl-port PORT (5671) Port on which to listen for SSL connections
- --ssl-require-client-authentication Forces clients to authenticate in order
- to establish an SSL connection
- --ssl-sasl-no-dict Disables SASL mechanisms that are vulner able to
- passive dictionary-based password attacks
-
-The first four of these are also available as client options (where
-they must either be in the client config file or set as environment
-variables e.g. QPID_SSL_CERT_DB).
-
-To run either the broker or client you need ssl-cert-db-path to point
-to the directory where relevant certificate and key databases can be
-found.
-
-Certificate databases are set up using certutil (included in the
-nss-tools package on fedora). See the NSS site for examples[1] and
-full details[2].
-
-For a simple testing you can set up a single db with a single self
-signed certificate. E.g (with myhost and mydomain replaced by the
-hostname and domainname of the machine in question respectively):
-
- mkdir test_cert_db
- certutil -N -d test_cert_db -f cert.password
- certutil -S -d test_cert_db -n "myhost.mydomain" \
- -s "CN=myhost.mydomain" -t "CT,," -x \
- -f cert.password -z /usr/bin/certutil
-
-Here cert.password is a file with a password in it that will be needed
-for accessing the created db.
-
-The daemon can then be started with something like the following:
-
-./src/qpidd --auth no --load-module src/.libs/ssl.so \
- --ssl-cert-db ./test_cert_db \
- --ssl-cert-password-file ./cert.password \
- --ssl-cert-name myhost.mydomain
-
-then for client set:
-
-QPID_LOAD_MODULE=./src/.libs/sslconnector.so
-QPID_SSL_CERT_DB=./test_cert_db
-
-and run e.g.
-
-./src/tests/perftest --count 10000 -P ssl --port 5671 \
- --broker myhost.mydomain
-
-When authentication is enabled, the EXTERNAL mechanism will be
-available on client authenticated SSL connections. This allows the
-clients authorisation id to be taken from the validated client
-certificate (it will be the CN with any DCs present appended as the
-domain, e.g. CN=bob,DC=acme,DC=com would result in an identity of
-bob@acme.com).
-
-[1] http://www.mozilla.org/projects/security/pki/nss/ref/ssl/gtstd.html
-[2] http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html
-
-
-Windows
-=======
-
-SSL support for Qpid-C++ on Windows is implemented using the Microsoft
-Secure Channel (Schannel) package. Currently, only registry based
-certificates scoped to the local machine are supported, however
-Schannel also supports file based and user scoped certificates, so
-additional support could be added as required. Client certificate
-authentication is not supported at this time.
-
-For testing purposes, a self signed certificate can be created as
-follows (requiring Administrator privilege on more recent versions of
-Windows):
-
- makecert -ss qpidstore -n "CN=myhost.mydomain" -r -sr localmachine myhost.cer
-
-where "qpidstore" is an abitrary certificate store name. The
-resulting output file "myhost.cer" is the public key of the
-certificate that will be required by any client that wishes to
-authenticate myhost.
-
-To run the server (also as Administrator on recent Windows versions):
-
- qpidd --ssl-cert-name myhost.mydomain --ssl-cert-store qpidstore [other-args]
-
-On the Windows client side, the SSL support is available without
-loading a separate support module. For each machine or separate user
-that will be using qpid, you must import the self signed certificate
-as a trusted root. This can be done from the MMC certificate snapin
-or directly using certmgr.exe. From the main window:
-
- select "Third-Party Root Certification Authorities"
- select "Action" -> "Import..."
- then direct the Certificate Import Wizard to the "myhost.cer" file
-
-To test the setup:
-
- perftest --count 10000 -P ssl --port 5671 --broker myhost.mydomain
-
-To export the certificate to non Windows clients, note that
-"myhost.cer" is the X.509 representation of the public key of the
-certificate in DER format. Import the certificate into the other
-clients if they support the DER format. Otherwise the certificate can
-be converted to PEM format using OpenSSL
-
- openssl x509 -in myhost.cer -inform DER -out myhost.pem -outform PEM