Added manual certificate creation examples.

This commit is contained in:
slawek committed 2026-10-17 16:23:19 +02:00
1 parent 9c84e82672
commit d0d3c760a3
3 files changed
+132 -15

No files matched your search

+2 -15
View File
@@ -262,19 +262,6 @@ python3 generate-mobileconfig.py \
--output alice-vpn.mobileconfig --output alice-vpn.mobileconfig
``` ```
--- ## Example commands
## Self-signed certificate Sometimes it is necessary to use customized scripts for a specific environment. Look at ready to customize and use examples in `make_certs.sh`. `show_certs.sh` displays essential certifcate information for all PEM files in the current working directory.
The following command creates a full-featured self-signed certificate usable as a CA and for client/server authentication:
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout "key.pem" \
-out "cert.pem" \
-subj "/CN=<user name>/O=<user organization>/C=<CC>" \
-addext "basicConstraints=critical,CA:TRUE" \
-addext "keyUsage=critical,digitalSignature,keyEncipherment,keyCertSign,cRLSign" \
-addext "extendedKeyUsage=serverAuth,clientAuth" \
-addext "subjectAltName=DNS:<computer_name>"
```
Executable
+124
View File
@@ -0,0 +1,124 @@
# Root CA certificate
openssl req \
-x509 \
-newkey rsa:4096 \
-keyout ca_key.pem \
-out ca_cert.pem \
-days 3650 \
-noenc \
-subj "/CN=Test CA $(date +"%Y-%m-%d")" \
-text \
-addext "basicConstraints=critical,CA:TRUE,pathlen:1" \
-addext "keyUsage=critical,keyCertSign,cRLSign"
# Issuing CA certificate
openssl req \
-newkey rsa:4096 \
-keyout issuing_ca_key.pem \
-noenc \
-subj "/CN=Issuing Test CA $(date +"%Y-%m-%d")" \
-addext "basicConstraints=critical,CA:TRUE,pathlen:0" \
-addext "keyUsage=critical,keyCertSign,cRLSign" |
openssl x509 \
-req \
-CA ca_cert.pem \
-CAkey ca_key.pem \
-copy_extensions copyall \
-days 3650 \
-text \
-out issuing_ca_cert.pem
# Client signing request
openssl req \
-newkey rsa:4096 \
-keyout client_key.pem \
-out client_req.pem \
-noenc \
-subj "/CN=Test Client" \
-addext "basicConstraints=critical,CA:FALSE" \
-addext "keyUsage=critical,digitalSignature,keyEncipherment" \
-addext "extendedKeyUsage=clientAuth"
# Server signing request
openssl req \
-newkey rsa:4096 \
-keyout server_key.pem \
-out server_req.pem \
-noenc \
-subj "/CN=test.example.com" \
-addext "basicConstraints=critical,CA:FALSE" \
-addext "keyUsage=critical,digitalSignature,keyEncipherment" \
-addext "extendedKeyUsage=serverAuth" \
-addext "subjectAltName=DNS:test.example.com,DNS:test,IP:127.0.0.1"
# User signing request
openssl req \
-newkey rsa:4096 \
-keyout user_key.pem \
-out user_req.pem \
-noenc \
-subj "/CN=Test User/emailAddress=testuser@example.com" \
-addext "basicConstraints=critical,CA:FALSE" \
-addext "keyUsage=critical,digitalSignature,keyEncipherment" \
-addext "extendedKeyUsage=clientAuth,emailProtection,codeSigning" \
-addext "subjectAltName=email:alias@example.com"
# Sign client certificate with issuing CA
openssl x509 \
-req \
-in client_req.pem \
-CA issuing_ca_cert.pem \
-CAkey issuing_ca_key.pem \
-copy_extensions copyall \
-days 365 \
-out client_cert.pem
# Sign server certificate with issuing CA
openssl x509 \
-req \
-in server_req.pem \
-CA issuing_ca_cert.pem \
-CAkey issuing_ca_key.pem \
-copy_extensions copyall \
-days 365 \
-out server_cert.pem
# Sign user certificate with issuing CA
openssl x509 \
-req \
-in user_req.pem \
-CA issuing_ca_cert.pem \
-CAkey issuing_ca_key.pem \
-copy_extensions copyall \
-days 365 \
-out user_cert.pem
# Certificate chain for PKCS#12 bundles
cat issuing_ca_cert.pem ca_cert.pem > ca_chain.pem
# Client PKCS#12 bundle
openssl pkcs12 \
-export \
-out client.pfx \
-inkey client_key.pem \
-in client_cert.pem \
-certfile ca_chain.pem \
-passout pass:changeit
# Server PKCS#12 bundle
openssl pkcs12 \
-export \
-out server.pfx \
-inkey server_key.pem \
-in server_cert.pem \
-certfile ca_chain.pem \
-passout pass:changeit
# User PKCS#12 bundle
openssl pkcs12 \
-export \
-out user.pfx \
-inkey user_key.pem \
-in user_cert.pem \
-certfile ca_chain.pem \
-passout pass:changeit
Executable
+6
View File
@@ -0,0 +1,6 @@
# Show all certificates
for cert in *_cert.pem; do
echo "Certificate: $cert"
openssl x509 -noout -subject -issuer -fingerprint -email -ext subjectAltName -in $cert
echo ""
done