I understand this is frustrating, but I haven’t figured out a way to work around this in our client stack. The problem is that the security token for the channel, which contains the time the channel was created at, comes from the server. So the checks for whether the channel expired happen with one timestamp from the client system and the second timestamp from the server system. If the clock on the server is wrong enough then the channel will often expire immediately.
I’ll see if there’s anything I can do about this, but in the meantime you’ll just have to make sure the clock on your server is accurate within 1 hour, which is pretty generous. It doesn’t matter if they’re different timezones - the times in OPC-UA are all UTC-based. They just need to be correct-ish.