0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 09:32:32 +01:00
mongodb/jstests/libs
2018-11-13 16:21:20 -05:00
..
command_line
config_files
jstestfuzz
override_methods SERVER-36966 Validate ns in cluster mapReduce 2018-11-05 09:08:39 -05:00
txns
8k-prime.dhparam
analyze_plan.js SERVER-37446 Change PlanStages which don't require a collection to avoid keeping a Collection*. 2018-11-07 15:05:49 -05:00
assert_schema_match.js
authTestsKey
backup_utils.js
badSAN.pem
ca.pem
change_stream_util.js
check_log.js
check_unique_indexes.js
check_uuids.js
chunk_manipulation_util.js
cleanup_orphaned_util.js
client_email.pem
client_escape.pem
client_privatekey.pem
client_revoked.pem
client_roles.pem
client_title.pem
client_utf8.cnf
client_utf8.pem
client-all-the-oids.csr.in
client-all-the-oids.pem
client-custom-oids.csr.in
client-custom-oids.pem
client-multivalue-rdn.pem
client-self-signed.pem
client.pem
cluster_cert.pem
collection_drop_recreate.js
command_sequence_with_retries.js
crl_client_revoked.pem
crl_expired.pem
crl.pem
csrs_upgrade_util.js
cycle_detection.js
database_versioning.js
dateutil.js
discover_topology.js
ecdsa-ca.pem SERVER-36619 Test that ECDSA certificates can be loaded by OpenSSL on Linux 2018-11-02 18:46:38 -04:00
ecdsa-client.pem SERVER-36619 Test that ECDSA certificates can be loaded by OpenSSL on Linux 2018-11-02 18:46:38 -04:00
ecdsa-server.pem SERVER-36619 Test that ECDSA certificates can be loaded by OpenSSL on Linux 2018-11-02 18:46:38 -04:00
expired.pem
feature_compatibility_version.js
fixture_helpers.js
fsm_serial_client.js
ftdc.js
fts.js
geo_math.js
geo_near_random.js
get_index_helpers.js
global_snapshot_reads_util.js
host_ipaddr.js
index_bigkeys.js
json_schema_test_runner.js
key1
key1_644
key2
keyForRollover SERVER-37833 Retry internal auth with alternate key during keyfile rollover 2018-11-07 10:20:26 -05:00
kill_sessions.js
localhostnameCN.pem
localhostnameSAN.pem
mockkrb5.conf
mockservice.keytab
mockuser.keytab
mongodbauthorizationgrant.cnf
mongoebench.js
mql_model_mongod_test_runner.js
namespace_utils.js
not_yet_valid.pem
parallel_shell_helpers.js
parallelTester.js SERVER-38054: failCommand fail point causes errors when run concurrently with other tests 2018-11-13 16:21:20 -05:00
password_protected.pem
pin_getmore_cursor.js
profiler.js
python.js
read_committed_lib.js
README.ssl SERVER-36619 Fix typo in SSL readme 2018-11-05 18:51:08 -05:00
retryable_writes_util.js
server_SAN2.pem
server_SAN.pem
server-with-ip-san-2.csr.in
server-with-ip-san.csr.in
server.pem
sessions_collection.js
smoke.pem
specific_secondary_reader_mongo.js
ssl_test.js
stats.js
test_background_ops.js
testconfig
trace_missing_docs.js
trusted-ca.pem
trusted-client.pem
trusted-client.pfx
trusted-server.pem
trusted-server.pfx
uuid_util.js
write_concern_util.js

client-self-signed.pem represents the same RDN as client.pem, but using itself as a CA:

openssl req -nodes -new -subj '/CN=client/OU=KernelUser/O=MongoDB/L=New York City/ST=New York/C=US' -out css.csr -keyout css.rsa
openssl rsa -in css.rsa -out css.key
openssl x509 -in css.csr -out jstests/libs/client-self-signed.pem -req -signkey client-self-signed.key -days 3650
cat css.key >> jstests/libs/client-self-signed.pem
rm css.{csr,rsa,key}

---------------------------
client-multivalue-rdn.pem represents the same RDN as client.pem, but grouping some elements together:

openssl req -new -nodes -subj '/CN=client+OU=KernelUser+O=MongoDB/L=New York City+ST=New York+C=US' -multivalue-rdn \
            -keyout client-multivalue-rdn.key -out client-multivalue-rdn.csr
openssl rsa -in client-multivalue-rdn.key -out client-multivalue-rdn.rsa
openssl x509 -in client-multivalue-rdn.csr -out client-multivalue-rdn.pem -req -CA ca.pem -days 3650 -CAcreateserial
cat client-multivalue-rdn.rsa >> client-multivalue-rdn.pem
rm ca.srl client-multivalue-rdn.key client-multivalue-rdn.rsa client-multivalue-rdn.csr

---------------------------
ecdsa-*.pem are ECDSA signed certificates:

generate an ec-key (from a well known curve)
openssl ecparam -name prime256v1 -genkey -out mykey.key

create certificate request
openssl req -new -key mykey.key -out mycsr.csr

sign key and generate certificate
openssl x509 -req -days 3650 -in mycsr.csr -CA ecdsa-ca.pem -CAcreateserial -out mycrt.crt -sha256

to include SANs in the certificate, instead run
openssl x509 -req -days 3650 -in mycsr.csr -CA ecdsa-ca.pem -CAcreateserial -out mycrt.crt -sha256 -extfile <(printf "subjectAltName=DNS:localhost,DNS:127.0.0.1")

combine key and certificate
cat mycrt.crt mykey.key > mycrt.pem

---------------------------
The other ceriticates in this directory come from x509gen.
How to generate a certificate with a custom extension:

1. Generate a normal certificate signing request without an extension
2. Make a copy of the system openssl.cnf and append this text to the file
    On Redhat/Fedora, openssl.cnf is in /etc/pki/tls

See jstests\libs\mongodbauthorizationgrant.cnf for how to generate the text with the
'openssl asn1parse' command.

[MongoDBAuthorizationGrant]
1.3.6.1.4.1.34601.2.1.1 = DER:312B300F0C066261636B75700C0561646D696E30180C0F72656164416E7944617461626173650C0561646D696E

3. Sign the certificate and add the custom extension
4. Make a new pem with the certificate and key

Example Commands
----------------
openssl req -config openssl.cnf -newkey rsa:2048 -nodes -keyout roles.key -out roles.csr

Example with subject name:
openssl req -config openssl.cnf -newkey rsa:2048 -nodes -keyout roles.key -out roles.csr -subj "/C=US/ST=New York/L=New York City/O=MongoDB/OU=KernelUser/CN=client/emailAddress=example@mongodb.com"

openssl x509 -req -sha256 -in roles.csr -days 3650 -out roles.pem -extfile openssl.cnf -extensions MongoDBAuthorizationGrant -CA jstests/libs/ca.pem -CAcreateserial

openssl rsa -in roles.key -out roles2.key

cat roles.pem roles2.key > roles_final.pem


Example Commands for UTF-8
--------------------------
openssl req -new -utf8 -nameopt multiline,utf8  -config .\jstests\libs\client_utf8.cnf -newkey rsa:2048 -nodes -keyout roles.key -out roles.csr