You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* All the messages defined in the OCPP 1.6 edition 2 protocol have been implemented except GetCompositeSchedule for Charge Point role
40
41
* All the configuration keys defined in the OCPP 1.6 edition 2 protocol have been implemented for the Charge Point role
41
-
*Some Charge Point and Central System behavior related to the OCPP 1.6 security whitepaper edition 2 has been implemented (work in progress, see [OCPP security extensions](#ocpp-security-extensions))
42
+
*Most of Charge Point and Central System behavior related to the OCPP 1.6 security whitepaper edition 2 has been implemented (work in progress, see [OCPP security extensions](#ocpp-security-extensions))
42
43
43
44
The user application will have to implement some callbacks to provide the data needed by **Open OCPP** or to handle OCPP events (boot notification, remote start/stop notifications, meter values...).
44
45
@@ -51,6 +52,7 @@ The persistent data handled by **Open OCPP** is stored into a single file which
51
52
+ Badge cache and local list
52
53
+ Smart charging profile
53
54
+ Logs
55
+
* X.509 Certificates
54
56
55
57
* For Central System role :
56
58
@@ -121,10 +123,10 @@ In the "Owner" column, "S" means that the configuration key behavior is handled
121
123
| ChargingScheduleMaxPeriods | S | None |
122
124
| ConnectorSwitch3to1PhaseSupported | S | None |
123
125
| MaxChargingProfilesInstalled | S | None |
124
-
| AdditionalRootCertificateCheck | U |None|
126
+
| AdditionalRootCertificateCheck | U/S|Not implemented yet : implemented behavior is the same as if AdditionalRootCertificateCheck = False|
125
127
| AuthorizationKey | S | None |
126
128
| CertificateSignedMaxChainSize | S | None |
127
-
| CertificateStoreMaxLength | U |None|
129
+
| CertificateStoreMaxLength | U/S|If internal certificate management is enabled, the stack handle this parameter, otherwise it must be the user application|
128
130
| CpoName | S | None |
129
131
| SecurityProfile | S | None |
130
132
@@ -139,34 +141,112 @@ In the "Owner" column, "S" means that the configuration key behavior is handled
139
141
* 2 : TLS with HTTP Basic Authentication
140
142
* 3 : TLS with Client Side Certificates
141
143
142
-
In Charge Point role, the stack will automatically disconnect and then reconnect to the Central System after one of the following parameters has been modified :
144
+
In Charge Point role, the stack will automatically disconnect and then reconnect using the new parameters to the Central System after one of the following parameters has been modified :
143
145
***AuthorizationKey**
144
146
***Security Profile**
145
147
146
148
#### Security events
147
149
148
150
**Open OCPP** support the whole use cases of security events and logging.
149
151
150
-
In Charge Point role, it can optionnaly handle the storage of the security event log and the generation of the security log export when the Central System asks it. To enable/disable this feature, you have to modify the **SecurityLogMaxEntriesCount** charge point configuration value :
152
+
In Charge Point role, it can optionnaly handle the storage of the security event log and the generation of the security log export when the Central System asks it. To enable/disable this feature, you have to modify the **SecurityLogMaxEntriesCount** charge point configuration key :
151
153
152
154
* 0 = **Open OCPP** will not store security event and the security log must be generated by the user application
153
155
*\>0 = **Open OCPP** will store at max **SecurityLogMaxEntriesCount** (circular log) and will automatically generate the security log as a CSV file
154
156
155
157
In Charge Point role, the user application can generate custom security events and defines its criticity so that they are forwarded to the Central System.
156
158
157
-
In Charge Point role, the notification of security events can be enabled or disabled with the IChargePointConfig::securityEventNotificationEnabled() configuration. This can be usefull to disable them when the Central System does not implement the security extensions.
159
+
In Charge Point role, the notification of security events can be enabled or disabled with the **SecurityEventNotificationEnabled** configuration key. This can be usefull to disable them when the Central System does not implement the security extensions.
158
160
159
161
#### Extended trigger messages
160
162
161
163
**Open OCPP** support this feature for both Charge Point and Central System roles.
162
164
163
-
#### Certificate management messages
165
+
#### Certificate management
164
166
165
167
**Open OCPP** support this feature for both Charge Point and Central System roles.
166
168
167
-
The actual storage of the certificates and their keys must be done by the user application.
169
+
The behavior of this feature is controlled by the **InternalCertificateManagementEnabled** configuration key.
168
170
169
-
**Open OCPP** provides callbacks and helper classes to ease certificate manipulation and installation.
171
+
If **InternalCertificateManagementEnabled** is set to **false**, the actual storage of the certificates and their keys must be done by the user application. **Open OCPP** provides callbacks and helper classes to ease certificate manipulation and installation. The user application also has to configure the path to the installed certificates for the establishment of the secure connections using the following configuration keys :
172
+
173
+
* TlsServerCertificateCa
174
+
* TlsClientCertificate
175
+
* TlsClientCertificatePrivateKey
176
+
* TlsClientCertificatePrivateKeyPassphrase
177
+
178
+
If **InternalCertificateManagementEnabled** is set to **true**, the storage of certificates and their keys is fully handled by **Open OCPP**. The user application just has to provide a passphrase using the **TlsClientCertificatePrivateKeyPassphrase** configuration key to securily encrypt the certicates' private keys using AES-256-CBC algorithm. **Open OCPP** will automatically use the installed corresponding certificates depending on the configured Security Profile and the certificates validity dates.
179
+
180
+
### Internal configuration keys
181
+
182
+
The behavior and the configuration of the **Open OCPP** stack can be modified through configuration keys. Some are specific to an OCPP role and some are common.
183
+
184
+
#### Common keys
185
+
186
+
| Key | Type | Description |
187
+
| :---: | :---: | :--- |
188
+
| DatabasePath | string | Path to the database to store persistent data |
189
+
| JsonSchemasPath | string | Path to the JSON schemas to validate the messages |
| TlsAllowSelfSignedCertificates | bool | Allow TLS connections using self-signed certificates (Warning : enabling this feature is not recommended in production) |
219
+
| TlsAllowExpiredCertificates | bool | Allow TLS connections using expired certificates (Warning : enabling this feature is not recommended in production) |
220
+
| TlsAcceptNonTrustedCertificates | bool | Accept non trusted certificates for TLS connections (Warning : enabling this feature is not recommended in production) |
221
+
| TlsSkipServerNameCheck | bool | Skip server name check in certificates for TLS connections (Warning : enabling this feature is not recommended in production) |
222
+
| InternalCertificateManagementEnabled | bool | If true, certificates are stored inside **Open OCPP** databasen otherwise user application has to handle them|
| SecurityLogMaxEntriesCount | uint | Maximum number of entries in the security log (0 = no security logs in database) |
225
+
| ClientCertificateRequestHashType | string | Hash type for certificate request generation : sha256, sha384 or sha512 |
226
+
| ClientCertificateRequestKeyType | string | Key type for certificate request generation : ec or rsa |
227
+
| ClientCertificateRequestRsaKeyLength | uint | Length in bits of the key for certificate request generation if rsa has been selected for key type : minimum 2048 |
228
+
| ClientCertificateRequestEcCurve | string | Name of the elliptic curve for certificate request generation if ec has been selected for key type : prime256v1, secp256k1, secp384r1, secp521r1, brainpoolP256t1, brainpoolP384t1 or brainpoolP512t1 |
229
+
| ClientCertificateRequestSubjectCountry | string | Country for the subject field of certificate request generation (can be left empty) |
230
+
| ClientCertificateRequestSubjectState | string | State for the subject field of certificate request generation (can be left empty) |
231
+
| ClientCertificateRequestSubjectLocation | string | Location for the subject field of certificate request generation (can be left empty) |
232
+
| ClientCertificateRequestSubjectOrganizationUnit | string | Organization unit for the subject field of certificate request generation (can be left empty) |
233
+
| ClientCertificateRequestSubjectEmail | string | Email for the subject field of certificate request generation (can be left empty) |
234
+
235
+
#### Central System keys
236
+
237
+
| Key | Type | Description |
238
+
| :---: | :---: | :--- |
239
+
| ListenUrl | string | URL to listen to incomming websocket connections |
| BootNotificationRetryInterval | uint | Boot notification retry interval in second (sent in BootNotificationConf when status is Pending or Rejected) |
242
+
| HeartbeatInterval | uint | Heartbeat interval in seconds (sent in BootNotificationConf when status is Accepted) |
243
+
| HttpBasicAuthent | bool | If set to true, the Charge Points must autenticate themselves using HTTP Basic Authentication method |
244
+
| TlsEcdhCurve | string | ECDH curve to use for TLS connections with EC keys |
245
+
| TlsServerCertificate | string | Path to the Central System's certificate |
246
+
| TlsServerCertificatePrivateKey | string | Path to the Central System's certificate's private key |
0 commit comments