domain Name
(i.e. www.example.com or mysite.com). SSL server certificates are specific to the common name that they have been issued to, at the host level. Which means the common name must be the same as the web address you will be accessing when connecting to a secure site. For example, a SSL server certificate for the domain domain.com will receive a warning if accessing a site named www.domain.com or secure.domain.com, as www.domain.com and secure.domain.com are different from domain.com. (see also)*
matches 1 or more non-dot characters (but some implementations allow a dot. source)*
must match at least 1 characterwildcard certificates | SAN certificates | |
---|---|---|
apply to... | all level-1 subdomains of a single domain | all listed domains |
apply to the naked domain example.com ? | No | Yes, if explicitly listed in the supported names |
action to add / remove a supported domain | nothing (provided this is a level-1 subdomain of the registered domain) | re-issue the certificate |
Subject: CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US
tmpDir=$(mktemp -d); cd "$tmpDir"; export CN='www.acme.com'; openssl genrsa -out "$CN".key 2048; openssl req -new -key "$CN".key -out "$CN".csr -sha256 -subj "/C=US/ST=New Jersey/L=Fairfield/O=ACME Corporation/OU=Acme Rocket-Powered Products, Inc./CN=$CN"; ls -l; rm "$CN".{key,csr}; cd -; rmdir "$tmpDir"
-rw-r--r-- 1 bob users 1066 Mar 10 14:39 www.acme.com.csr -rw------- 1 bob users 1675 Mar 10 14:39 www.acme.com.key
openssl req -in "$CN".csr -noout -text
tmpDir=$(mktemp -d); cd "$tmpDir"; export CN='www.acme.com'; openssl genrsa -out "$CN".key 2048; openssl req -new -key "$CN".key -out "$CN".csr -sha256 -subj "/C=US/ST=New Jersey/L=Fairfield/O=ACME Corporation/OU=Acme Rocket-Powered Products, Inc./CN=$CN"; openssl req -in "$CN".csr -noout -text; rm "$CN".{key,csr}; cd -; rmdir "$tmpDir"
Certificate Request: Data: Version: 1 (0x0) Subject: C = US, ST = New Jersey, L = Fairfield, O = ACME Corporation, OU = "Acme Rocket-Powered Products, Inc.", CN = www.acme.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 5c:d0:52:6b:e6:8d:82:ba:50:ed:3f:ea:24:42:81: (encoded junk) 9f:ce:50:4e:9c:7f:01:91:46:14:18:66:e2:a7:41: bd:8b Exponent: 65537 (0x10001) Attributes: a0:00 Signature Algorithm: sha256WithRSAEncryption 8e:7a:33:c2:c3:ec:21:e3:09:9b:2b:dc:46:41:a3:3d:65:15: (encoded junk) 88:91:c9:d4:c3:6d:86:9d:90:e8:da:26:d0:f2:5f:aa:7c:3f: e3:70:0e:a5
The purpose of a CSR is to apply for a new certificate to a CA. So you'll have to transmit the CSR to the CA and ask a client / server certificate :
X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication
$ openssl x509 -noout -modulus -in "$CN".crt | openssl md5 15c5f1ca9276647b3d4da491b2d48482 $ openssl rsa -noout -modulus -in "$CN".key | openssl md5 Enter pass phrase for "$CN".key: 15c5f1ca9276647b3d4da491b2d48482
file extension | contains | format | description | usage context | origin |
---|---|---|---|---|---|
|
pkcs10 Certificate Signing Request (details). | .csr extension is Apache mod_ssl practice. | |||
|
private key | pkcs8 private key (details). | .key is Apache mod_ssl practice. | ||
|
CA certificate | binary | CA X.509 certificate. The DER format is simply a binary form of a certificate instead of the ASCII PEM format. The only way to tell the difference between a DER .cer file and a PEM .cer file is to open it in a text editor and look for the BEGIN / END statements. All types of certificates and private keys can be encoded in DER format. |
DER is typically used with Java platforms. | .crt was introduced by Netscape. |
|
|
base64 ASCII | The PKCS#7 and P7B certificates contain -----BEGIN PKCS7----- and -----END PKCS7----- statements. Several platforms support P7B files including Microsoft Windows and Java Tomcat.x-pkcs7-certificates, a "certs-only PKCS#7 bundle" (???). These extensions were introduced by Microsoft. |
||
|
|
base64 ASCII |
|
SSLCertificateFile /appli/projects/tri/apache_2.2.24/conf/ssl/appName_environment.pem SSLCertificateKeyFile /appli/projects/tri/apache_2.2.24/conf/ssl/appName_environment.key SSLCertificateChainFile /appli/projects/tri/apache_2.2.24/conf/ssl/appName_environment-bundle.pem
Over the last few years, several initiatives such as :
In order to make enlightened decisions —since there's definitely no magic involved— here is what HTTPS offers :
who you think you're talking to
2 "flavors" of cryptography :
Although Alice may encrypt her message to make it private, there is still a concern that someone might modify her original message or substitute it with a different one, in order to change its contents, or its recipient. One way of guaranteeing the integrity of Alice's message is for her to create a concise summary of her message and send this to Bob as well. Upon receipt of the message, Bob creates its own summary and compares it with the one Alice sent. If the summaries are the same then the message has been received intact.
A summary such as this is called a message digest, one-way function or hash function. Message digests are used to create a unique, short, fixed-length representation of a longer, variable-length message.
The message digest must be sent securely by Alice to Bob. Otherwise, it will be impossible for Bob to determine the integrity of the message he receives. This is where digital signatures join the game.
Dear Bob, ... ... XOXOX AliceBob needs to check it was really sent to him by Alice, thanks to a digital signature created by Alice and included with the message.
Digital signature = ( digest of the message + sequence number ) x encrypt with sender's private key
In Apache, SSL is provided by mod_ssl, which implements the OpenSSL cryptography engine.
SSL and TLS are NOT encryption mechanisms. They are options that dictate how the secure connection will be initiated.
No matter which method you choose for initiating the connection, TLS or SSL, the same level of encryption will be obtained when talking to the server and that level is determined by the software installed on the server, how that is configured, and what your program actually supports.