Skip to content

Commit c0cbf25

Browse files
committed
[examples] Added TLS certificates + generation script
1 parent 0b86a94 commit c0cbf25

13 files changed

+188
-4
lines changed

examples/certificates/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*.param
2+
*.srl
3+
*.csr

examples/certificates/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Certificate generation for Open OCPP examples
2+
3+
The **generate_certificates.sh** script allow to generate new certificates.
4+
5+
The following certificates are generated:
6+
7+
* open-ocpp_ca.crt : CA organization certificate
8+
* open-ocpp_central-system.crt : Central System's certificate
9+
* open-ocpp_charge-point.crt : Charge Point's certificate
10+
11+
The associated private keys are generated in the .key files.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/bin/bash
2+
3+
echo "Generating private key for CA..."
4+
openssl ecparam -name prime256v1 -out open-ocpp_ca.param
5+
openssl ecparam -in open-ocpp_ca.param -genkey -noout -out open-ocpp_ca.key
6+
echo "Generating certificate for CA..."
7+
openssl req -new -sha256 -key open-ocpp_ca.key -extensions v3_ca -config open-ocpp_ca.cnf -out open-ocpp_ca.csr
8+
echo "Self-signing CA certificate..."
9+
openssl x509 -req -sha256 -days 3650 -in open-ocpp_ca.csr -extensions v3_ca -extfile open-ocpp_ca.cnf -signkey open-ocpp_ca.key -out open-ocpp_ca.crt
10+
echo ""
11+
12+
echo "Generating private key for Central System..."
13+
openssl ecparam -name prime256v1 -out open-ocpp_central-system.param
14+
openssl ecparam -in open-ocpp_central-system.param -genkey -noout -out open-ocpp_central-system.key
15+
echo "Generating certificate request for Central System..."
16+
openssl req -new -sha256 -key open-ocpp_central-system.key -extensions v3_ca -config open-ocpp_central-system.cnf -out open-ocpp_central-system.csr
17+
echo "Signing Central System certificate with CA certificate..."
18+
openssl x509 -req -sha256 -days 3650 -in open-ocpp_central-system.csr -extensions v3_ca -extfile open-ocpp_central-system.cnf -CA open-ocpp_ca.crt -CAkey open-ocpp_ca.key -CAcreateserial -out open-ocpp_central-system.crt
19+
echo "Verify certificate chain..."
20+
openssl verify -verbose -CAfile open-ocpp_ca.crt open-ocpp_central-system.crt
21+
echo ""
22+
23+
echo "Generating private key for Charge Point..."
24+
openssl ecparam -name prime256v1 -out open-ocpp_charge-point.param
25+
openssl ecparam -in open-ocpp_charge-point.param -genkey -noout -out open-ocpp_charge-point.key
26+
echo "Generating certificate request for Charge Point..."
27+
openssl req -new -sha256 -key open-ocpp_charge-point.key -extensions v3_ca -config open-ocpp_charge-point.cnf -out open-ocpp_charge-point.csr
28+
echo "Signing Charge Point certificate with CA certificate..."
29+
openssl x509 -req -sha256 -days 3650 -in open-ocpp_charge-point.csr -extensions v3_ca -extfile open-ocpp_charge-point.cnf -CA open-ocpp_ca.crt -CAkey open-ocpp_ca.key -CAcreateserial -out open-ocpp_charge-point.crt
30+
echo "Verify certificate chain..."
31+
openssl verify -verbose -CAfile open-ocpp_ca.crt open-ocpp_charge-point.crt
32+
echo ""
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
[req]
2+
distinguished_name = req_distinguished_name
3+
4+
# Stop confirmation prompts. All information is contained below.
5+
prompt = no
6+
7+
# The extensions to add to a certificate request
8+
x509_extensions = v3_ca
9+
10+
[req_distinguished_name]
11+
countryName = FR
12+
stateOrProvinceName = Savoie
13+
localityName = Chambery
14+
organizationName = Open OCPP
15+
organizationalUnitName = Examples
16+
commonName = Open OCPP Certificate Authority
17+
emailAddress = [email protected]
18+
19+
[v3_ca]
20+
basicConstraints = CA:TRUE
21+
subjectAltName = @alt_names
22+
23+
[alt_names]
24+
DNS.1 = localhost
25+
DNS.2 = IP:127.0.0.1
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICfjCCAiSgAwIBAgIUROpklJY2B+02oFHz1MvijdkjtvgwCgYIKoZIzj0EAwIw
3+
gaMxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIDAZTYXZvaWUxETAPBgNVBAcMCENoYW1i
4+
ZXJ5MRIwEAYDVQQKDAlPcGVuIE9DUFAxETAPBgNVBAsMCEV4YW1wbGVzMSgwJgYD
5+
VQQDDB9PcGVuIE9DUFAgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYJKoZIhvcN
6+
AQkBFhBjYUBvcGVuLW9jcHAub3JnMB4XDTIyMDEyNTA4MjQzM1oXDTMyMDEyMzA4
7+
MjQzM1owgaMxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIDAZTYXZvaWUxETAPBgNVBAcM
8+
CENoYW1iZXJ5MRIwEAYDVQQKDAlPcGVuIE9DUFAxETAPBgNVBAsMCEV4YW1wbGVz
9+
MSgwJgYDVQQDDB9PcGVuIE9DUFAgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYJ
10+
KoZIhvcNAQkBFhBjYUBvcGVuLW9jcHAub3JnMFkwEwYHKoZIzj0CAQYIKoZIzj0D
11+
AQcDQgAEJZAFFCLPK7VimsLANzt6QEVVASRfqG+w6/oiCksM8l5/UkbtMi07Eum9
12+
IS1opxqsf5dPrGnLVz2wslSEsdHiaqM0MDIwDAYDVR0TBAUwAwEB/zAiBgNVHREE
13+
GzAZgglsb2NhbGhvc3SCDElQOjEyNy4wLjAuMTAKBggqhkjOPQQDAgNIADBFAiEA
14+
9Dwgm5x0hw+wRtek9UJ1aJdwmlVgHCeGqFUjwArjn1YCIES6iO0nG+sMMFhWdRHZ
15+
nmfCimIZKr/bIH6EefWzbg9s
16+
-----END CERTIFICATE-----
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN EC PRIVATE KEY-----
2+
MHcCAQEEIDKwZrJhHkMw8cMAUNRgXzaFKlnimYYY8xB6ifuL/s4OoAoGCCqGSM49
3+
AwEHoUQDQgAEJZAFFCLPK7VimsLANzt6QEVVASRfqG+w6/oiCksM8l5/UkbtMi07
4+
Eum9IS1opxqsf5dPrGnLVz2wslSEsdHiag==
5+
-----END EC PRIVATE KEY-----
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
[req]
2+
distinguished_name = req_distinguished_name
3+
4+
# Stop confirmation prompts. All information is contained below.
5+
prompt = no
6+
7+
# The extensions to add to a certificate request
8+
x509_extensions = v3_ca
9+
10+
[req_distinguished_name]
11+
countryName = FR
12+
stateOrProvinceName = Savoie
13+
localityName = Chambery
14+
organizationName = Open OCPP
15+
organizationalUnitName = Examples
16+
commonName = Open OCPP Central System
17+
emailAddress = [email protected]
18+
19+
[v3_ca]
20+
basicConstraints = CA:FALSE
21+
subjectAltName = @alt_names
22+
23+
[alt_names]
24+
DNS.1 = localhost
25+
DNS.2 = IP:127.0.0.1
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICgDCCAiagAwIBAgIUE0SqeLRrvEnH5WWw36XvPEisumMwCgYIKoZIzj0EAwIw
3+
gaMxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIDAZTYXZvaWUxETAPBgNVBAcMCENoYW1i
4+
ZXJ5MRIwEAYDVQQKDAlPcGVuIE9DUFAxETAPBgNVBAsMCEV4YW1wbGVzMSgwJgYD
5+
VQQDDB9PcGVuIE9DUFAgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYJKoZIhvcN
6+
AQkBFhBjYUBvcGVuLW9jcHAub3JnMB4XDTIyMDEyNTA4MjQzM1oXDTMyMDEyMzA4
7+
MjQzM1owgagxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIDAZTYXZvaWUxETAPBgNVBAcM
8+
CENoYW1iZXJ5MRIwEAYDVQQKDAlPcGVuIE9DUFAxETAPBgNVBAsMCEV4YW1wbGVz
9+
MSEwHwYDVQQDDBhPcGVuIE9DUFAgQ2VudHJhbCBTeXN0ZW0xKzApBgkqhkiG9w0B
10+
CQEWHGNlbnRyYWwuc3lzdGVtQG9wZW4tb2NwcC5vcmcwWTATBgcqhkjOPQIBBggq
11+
hkjOPQMBBwNCAAR677GKDxt/gxd7ijqSvhF61+ETcNAvleHheWYuMiDQdfkVazz/
12+
pEBvvyRDiYpL39GyLubcW0cFJY41inripW44ozEwLzAJBgNVHRMEAjAAMCIGA1Ud
13+
EQQbMBmCCWxvY2FsaG9zdIIMSVA6MTI3LjAuMC4xMAoGCCqGSM49BAMCA0gAMEUC
14+
IH2UJPDnxHhg6nT/GnW+qIDvas7BSAZMIRQQpzYpxINaAiEA1Xe79Q7BUJ98esNN
15+
NhtHEYmVcY4Pjzdb6r75m/vjJN4=
16+
-----END CERTIFICATE-----
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN EC PRIVATE KEY-----
2+
MHcCAQEEIFzxXv+7UwwnKeLgp8IB01r+fs5qAXiqjo8Ji/QJyCMjoAoGCCqGSM49
3+
AwEHoUQDQgAEeu+xig8bf4MXe4o6kr4RetfhE3DQL5Xh4XlmLjIg0HX5FWs8/6RA
4+
b78kQ4mKS9/Rsi7m3FtHBSWONYp64qVuOA==
5+
-----END EC PRIVATE KEY-----
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
[req]
2+
distinguished_name = req_distinguished_name
3+
4+
# Stop confirmation prompts. All information is contained below.
5+
prompt = no
6+
7+
# The extensions to add to a certificate request
8+
x509_extensions = v3_ca
9+
10+
[req_distinguished_name]
11+
countryName = FR
12+
stateOrProvinceName = Savoie
13+
localityName = Chambery
14+
organizationName = Open OCPP
15+
organizationalUnitName = Examples
16+
commonName = Open OCPP Charge Point
17+
emailAddress = [email protected]
18+
19+
[v3_ca]
20+
basicConstraints = CA:FALSE
21+
subjectAltName = @alt_names
22+
23+
[alt_names]
24+
DNS.1 = localhost
25+
DNS.2 = IP:127.0.0.1

0 commit comments

Comments
 (0)