View Issue Details

IDProjectCategoryView StatusLast Update
000437310000-004: ServicesSpecpublic2021-03-10 17:48
ReporterChristian Haas Assigned ToMatthias Damm  
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionfixed 
Summary0004373: How to re-use session after certificate renewal
Description

Part 12 and the usage of a GDS for certificate management is supposed to minimize disruption in case of certificate renewal. If one wants to keep a session alive after certificate change the session should be activated on a new secure channel (with new certificate). Yet, Part 4 states:

Subsequent calls to ActivateSession may be associated with different SecureChannels. If this is the case then the Server shall verify that the Certificate the Client used to create the new SecureChannel is the same as the Certificate used to create the original SecureChannel.

This is kind of preventing the re-usage of an exisiting session on a new secure channel, right ? Maybe it would be good to explicitly describe the procedure how to act as a server/client after certificates are rewnewed.

TagsNo tags attached.
Commit Version
Fix Due Date

Relationships

related to 0006607 closedMatthias Damm 5.6.3 ActivateSession 

Activities

Jim Luth

2018-08-28 15:27

administrator   ~0009321

Clarify in Part 4 expected behavior when a Cert is renewed.

Jim Luth

2018-08-28 15:32

administrator   ~0009323

Needs 1.04 Errata.

Christian Haas

2018-09-21 12:56

reporter   ~0009398

Just a comment on your discussion to my issue:

Part 12 states for applyChanges

If the Server Certificate has changed, Secure Channels using the old Certificate will eventually be interrupted. The only leeway the Server has is with the timing. In the best case, the Server can close the TransportConnections for the affected Endpoints and leave any Subscriptions intact. This should appear no different than a network interruption from the perspective of the Client. The Client should be prepared to deal with Certificate changes during its reconnect logic.

How can the subscriptions be kept intact if we have to kill the session ?

Randy Armstrong

2018-12-05 16:53

administrator   ~0009671

Need to recommend that client certificate changes should behave like a redundant client failover where a new session is created and the subscriptions are transferred.

Matthias Damm

2018-12-14 17:55

developer   ~0009708

The problem is that TransferSubscription is optional and only works if the user is the same (does not work with anonymous used with headless clients)

ActivateSession:
We should allow a new Certificate if the ApplicationInstanceUri matches the previous certificate. With security activiated, the certificate must be trusted anyhow and the trust of applications with an ApplicationInstanceUri must already be handled right when managing the trust list.

TransferSubscription:
We should allow TransferSubscription if security is activated and the ApplicationInstanceUri is the same like the ApplicationInstanceUri of the old session.

Matthias Damm

2019-01-03 16:37

developer   ~0009772

For ActivateSession it does not help to allow new certificates with the same ApplicationInstanceUri since there is also a signature check for a signature created by the client with the private key and checked with the public key provided in CreateSession. This check fails as soon as the client changes the private key. This is recomended when creating new certificates.

The only option I can see at the moment is an additional method that allows the change of the Client Certificate on an existing Session.

The only possible short term enhancement is the descibed clarification for TransferSubscription to make this more reliable.

Matthias Damm

2020-03-04 15:40

developer   ~0011648

If the client certificate is replaced, a new Session is required. There is no way around this.
The only thing we can do is to make TransferSubscription work for more combination for this case (allow Anonymous token if application stays the same).

Added following clarification to
OPC 10000-4 - UA Specification Part 4 - Services Draft 1.05.07.docx

5.13.7 TransferSubscriptions

Added:
If the Client uses an ANONYMOUS_0 user token, the Server shall validate if the ApplicationUri is the same for the old and the new Session and the MessageSecurityMode is SIGN_2 or SIGNANDENCRYPT_3.

Jim Luth

2020-03-04 22:10

administrator   ~0011672

Agreed to changes in Dallas meeting.

Issue History

Date Modified Username Field Change
2018-08-20 14:54 Christian Haas New Issue
2018-08-28 15:26 Jim Luth Project 10000-012: Discovery => 10000-004: Services
2018-08-28 15:27 Jim Luth Note Added: 0009321
2018-08-28 15:27 Jim Luth Assigned To => Matthias Damm
2018-08-28 15:27 Jim Luth Status new => assigned
2018-08-28 15:32 Jim Luth Note Added: 0009323
2018-09-21 12:56 Christian Haas Note Added: 0009398
2018-12-05 16:53 Randy Armstrong Note Added: 0009671
2018-12-14 17:55 Matthias Damm Note Added: 0009708
2018-12-14 17:56 Matthias Damm Assigned To Matthias Damm => Randy Armstrong
2019-01-02 13:40 Matthias Damm Assigned To Randy Armstrong => Matthias Damm
2019-01-03 16:37 Matthias Damm Note Added: 0009772
2020-03-04 15:40 Matthias Damm Status assigned => resolved
2020-03-04 15:40 Matthias Damm Resolution open => fixed
2020-03-04 15:40 Matthias Damm Note Added: 0011648
2020-03-04 22:10 Jim Luth Status resolved => closed
2020-03-04 22:10 Jim Luth Fixed in Version => 1.05
2020-03-04 22:10 Jim Luth Note Added: 0011672
2020-12-06 14:30 Matthias Damm Relationship added has duplicate 0006279
2020-12-06 14:37 Matthias Damm Relationship deleted has duplicate 0006279
2021-03-10 17:48 Randy Armstrong Relationship added related to 0006607