IEC 104 TLS (IEC 62351-3)
IEC 104 bağlantısı TLS ile şifrelenebilir. Profil IEC 62351-3:2023: iki uç da sertifika sunar, her biri karşı tarafın sertifikasını kendi güvendiği CA’ya göre doğrular, anahtarlar belirli aralıklarla yenilenir ve iptal edilmiş sertifikalar reddedilir. TLS hem Client hem Server bağlantısında aynı alanlarla açılır.
TLS kapalıyken bağlantı düz TCP’dir ve hiçbir davranışı değişmez. IEC 104’ün kendisi (ASDU’lar, t1–t3, k/w, genel sorgu, kumandalar, olay tamponu) TLS ile değişmez; TLS, 104’ün altında bir katmandır.
Gerekenler
Section titled “Gerekenler”Her uç için:
- Kendi sertifikası ve özel anahtarı, PKCS#12 dosyası olarak (
.p12/.pfx) ve parolası. - Karşı tarafın sertifikasını veren CA’nın sertifikası, PEM ya da DER. Yalnızca bu CA’nın verdiği sertifikayı sunan bir eş kabul edilir.
- İsteğe bağlı olarak CRL (iptal listesi), PEM ya da DER.
Anahtarlar en az RSA 2048 ya da 256 bit eğri (ör. P-256) olmalıdır; sertifikalar en çok 8192 bayt kabul edilir.
Yapılandırma
Section titled “Yapılandırma”Alanlar bağlantının (Connection) alanlarıdır, Client ve Server için aynıdır. Dosyalar bağlantıyla birlikte yüklenir: bağlantı formunda TLS (IEC 62351-3) bölümü, REST’te POST /api/protocols/iec104/connections/with-file ve PUT /api/protocols/iec104/connections/{id}/with-file (çok parçalı istek: connection ile tlsCertificateFile, tlsCaFile, tlsCrlFile parçaları).
| Alan | Tip | Varsayılan | Açıklama |
|---|---|---|---|
tlsEnabled | Boolean | kapalı | TLS’i açar |
tlsMinVersion | TLS 1.2 / TLS 1.3 | TLS 1.2 | En düşük sürüm. TLS 1.2 seçiliyken TLS 1.3 de sunulur; TLS 1.3 yalnızca 1.3 konuşur. TLS 1.0 / 1.1 hiç sunulmaz |
tlsCertificateFileId | Dosya | — | Bağlantının kendi sertifikası ve anahtarı (PKCS#12) |
tlsCertificatePassword | Gizli | — | PKCS#12 parolası; hiçbir yanıtta gösterilmez |
tlsCaFileId | Dosya | — | Güvenilen CA sertifikaları |
tlsCrlFileId | Dosya | — | İptal listesi (isteğe bağlı) |
tlsTrustMode | Any from CA / Listed from CA | Any from CA | Hangi eşlerin kabul edileceği; aşağıdaki İzinli eşler bölümüne bakın |
tlsResumptionMinutes | Integer | 360 | TLS 1.2: oturum devamı aralığı (yeni anahtar, sertifika kontrolü yok). Yeniden anlaşma aralığından küçük olmalı |
tlsRenegotiationMinutes | Integer | 720 | TLS 1.2: tam yeniden anlaşma aralığı; iki sertifika da yeniden doğrulanır. 10 ile 1440 dakika arası |
tlsKeyUpdateMinutes | Integer | 0 (kapalı) | TLS 1.3: anahtar güncelleme aralığı. Aşağıdaki uyarıya bakın |
tlsRenegotiationTimeoutMs | Integer | 10000 | Yeniden anlaşmanın tamamlanması için beklenen süre |
tlsRevocationCheckMinutes | Integer | 1440 | Açık bağlantıların CRL’e göre yeniden kontrol aralığı |
tlsRevocationGraceHours | Integer | 0 | Sertifikası iptal edilen bir eşin bağlı kalabileceği süre; 0 = hemen kapatılır |
Doğrulama
Section titled “Doğrulama”Bir eş şu durumlarda reddedilir ve bağlantı kurulmaz:
- Sertifika göndermediyse (sunucu her zaman istemci sertifikası ister).
- Sertifikası güvenilen CA’ya zincirlenmiyorsa.
- Sertifikasının süresi dolduysa ya da henüz geçerli değilse.
- Zincirde zayıf bir anahtar ya da 8192 bayttan büyük bir sertifika varsa.
Listed from CAmodunda sertifikası bağlantının güven listesinde onaylı değilse.- CRL sertifikayı iptal edilmiş olarak listeliyorsa.
CRL yoksa, süresi dolduysa ya da imzası CA’ya ait değilse bağlantı kesilmez; yalnızca uyarı yazılır (IEC 62351-3 6.4.4.4.2). Süresi dolmuş bir CRL’in listelediği sertifika yine iptal edilmiş sayılır.
Ana makine adı (hostname) doğrulanmaz: sahada bağlantılar IP ile kurulur ve eşin kimliği sertifikasının kendisidir.
İzinli eşler
Section titled “İzinli eşler”tlsTrustMode alanı Listed from CA olduğunda, CA’dan geçen bir eşin sertifikası ayrıca bağlantının güven listesinde onaylı olmalıdır (IEC 62351-3 6.4.4.3). Liste, OPC UA bağlantılarının kullandığı sertifika güven listesiyle aynıdır. Eş, sertifikasının seri numarası ve veren CA ile tanınır.
- CA’nın verdiği ama listede olmayan bir eş reddedilir (
PEER_NOT_ALLOWED) ve listeye bekleyen olarak eklenir. Proje günlüğü “waiting for approval” yazar. - Bağlantı formunda Güven Modu alanının yanındaki Güvenilir Uçlar penceresinden bekleyen sertifika onaylanır ya da sertifika dosyası doğrudan yüklenir. Pencere kaydedilmiş bir bağlantıda açılır.
- Liste 15 saniyede bir okunur. Onay, bağlantıyı yeniden başlatmadan eşin bir sonraki denemesinde geçerli olur. Listeden silinen bir eşin açık bağlantısı kapatılır.
- Liste okunamazsa bağlantı başlamaz; CA’nın verdiği her eşe açık bir bağlantıya dönüşmez.
REST: GET /api/protocols/iec104/connections/{id}/certificates/trusted ve …/pending, POST …/certificates/{kayıt}/trust, POST …/certificates/upload-trusted (çok parçalı, certificateFile), DELETE …/certificates/{kayıt}.
CRL deposu
Section titled “CRL deposu”CA’lar yeni CRL’i genelde birkaç günde bir yayınlar. CRL’i her bağlantıya ayrı ayrı yüklemek yerine space’in CRL deposu kullanılabilir:
- TLS bağlantıları başlarken güvendikleri CA’ları depoya kendiliğinden ekler.
- Bağlantı formunun TLS bölümündeki CRL Deposu → CA’lar ve CRL’ler penceresinde her CA için CRL yüklenir ya da indirme adresi, açma/kapama ve periyot ayarlanır. Şimdi indir hemen dener; son indirmenin zamanı ve hatası satırda görünür.
- Adres boşsa, bağlanan bir eşin sertifikasındaki CRL dağıtım noktasından doldurulur. İndirme siz açınca başlar.
- CRL yalnızca CA tarafından imzalanmışsa, süresi geçmemişse ve kullanılandan eski değilse alınır; aksi hâlde sebebi yazılır ve kullanılan CRL değişmez.
- Bağlantılar depoyu dakikada bir okur. Yeni bir CRL, bağlantıyı yeniden başlatmadan uygulanır ve açık bağlantılar hemen ona göre yeniden kontrol edilir; iptal edilmiş bir eş kapatılır.
- Bağlantının kendi CRL dosyası da geçerlidir; aynı CA için en yeni CRL kullanılır.
İndirme yalnızca http / https ile yapılır; sunucunun kendisine, link-local (ör. 169.254.x.x) ve multicast adreslere gidilmez, yönlendirme izlenmez. Bağlantı 10 sn, istek 30 sn, dosya en çok 10 MB ile sınırlıdır. Kümede indirme lider düğümde yapılır.
REST: GET /api/connections/certificate-authorities, POST …/{id}/crl (çok parçalı, crlFile), PUT …/{id}/download (url, downloadEnabled, downloadMinutes), POST …/{id}/download (şimdi indir), DELETE …/{id}.
Anahtar yenileme
Section titled “Anahtar yenileme”| Sürüm | Mekanizma | Ne olur |
|---|---|---|
| TLS 1.2 | Oturum devamı (tlsResumptionMinutes) | İstemci yeni oturum anahtarları alır; sertifikalar yeniden kontrol edilmez |
| TLS 1.2 | Tam yeniden anlaşma (tlsRenegotiationMinutes) | Sunucu yeniden anlaşma ister; istemci aralık dolduktan kısa bir süre sonra hâlâ istenmemişse kendisi başlatır. İki sertifika da yeniden doğrulanır. Süre içinde tamamlanmazsa bağlantı kapatılır |
| TLS 1.3 | Anahtar güncelleme (tlsKeyUpdateMinutes) | Yeni trafik anahtarları; sertifikalar yeniden kontrol edilmez |
TLS 1.3 el sıkışmadan sonra sertifikalara bir daha bakmadığı için iptal, tlsRevocationCheckMinutes aralığıyla uygulama tarafından kontrol edilir: açık her bağlantının eş sertifikası CRL’e karşı yeniden denetlenir ve iptal edilmişse bağlantı (tolerans süresi varsa sonunda) kapatılır.
Sunucu: olay tamponu
Section titled “Sunucu: olay tamponu”Sunucuda olay tamponu TLS’li bir istemci için IP adresine değil, istemcinin sertifikasına (sertifikanın konusu ve veren CA, ör. CN=Merkez SCADA (issued by CN=Tesis CA)) bağlıdır. Böylece:
- İstemcinin IP adresi değişse de biriken olaylarını alır.
- Aynı NAT arkasındaki istemciler karışmaz.
- İstemci sertifikası yenilendiğinde (aynı konu ve CA ile) tamponu korunur.
Kontrol panelindeki Olay tamponu ve İstemciler pencereleri bu anahtarı gösterir.
Güvenlik olayları
Section titled “Güvenlik olayları”TLS olayları bağlantının proje günlüğüne yazılır. Her satır olayın adını ve dayandığı IEC 62351-3 maddesini taşır, ör. … [IEC 62351-3 6.4.4.2, PEER_CERTIFICATE_UNTRUSTED].
| Olay | Günlük seviyesi | Ne zaman |
|---|---|---|
HANDSHAKE_SUCCEEDED | Bilgi | Bağlantı kuruldu; sürüm, şifre takımı ve eşin sertifikası yazılır |
HANDSHAKE_FAILED | Hata | El sıkışma başarısız (ortak sürüm / şifre yok, zaman aşımı, eşin uyarısı) |
PEER_CERTIFICATE_MISSING | Hata | Eş sertifika göndermedi |
PEER_CERTIFICATE_UNTRUSTED | Hata | Eşin sertifikası güvenilen CA’ya zincirlenmiyor |
PEER_CERTIFICATE_EXPIRED / _NOT_YET_VALID | Hata | Sertifikanın geçerlilik süresi dışında (iki ucun saatini kontrol edin) |
PEER_KEY_TOO_WEAK / PEER_CERTIFICATE_TOO_LARGE | Hata | Zayıf anahtar / 8192 bayttan büyük sertifika |
PEER_CERTIFICATE_REVOKED | Hata | CRL sertifikayı iptal etmiş; bağlantı kurulmaz ya da kapatılır |
PEER_REVOKED_IN_GRACE | Uyarı | Sertifika iptal edildi; bağlantı tolerans süresi boyunca açık |
CRL_UNAVAILABLE / CRL_EXPIRED / CRL_INVALID | Uyarı | CRL yok, süresi dolmuş ya da imzası geçersiz; bağlantı kesilmez |
SESSION_RESUMED | Bilgi | TLS 1.2 oturum devamı |
RENEGOTIATED | Bilgi | TLS 1.2 tam yeniden anlaşma; iki sertifika yeniden doğrulandı |
RENEGOTIATION_FAILED | Hata | Yeniden anlaşma tamamlanmadı; bağlantı kapatıldı |
KEY_UPDATED | Bilgi | TLS 1.3 anahtar güncellemesi gönderildi |
SESSION_FAILED | Hata | Açık bağlantıda TLS katmanı hatası |
İstemci bağlantısında reddedilen bir el sıkışma, ayrıca “Could not connect to the station over TLS” olarak yazılır: bağlantı hiç kurulmamıştır, bir kopma değildir.
Standart karşılığı
Section titled “Standart karşılığı”Desteklenen: TLS 1.2 ve 1.3, karşılıklı kimlik doğrulama, AES-GCM şifre takımları (ECDHE-ECDSA, ECDHE-RSA, DHE-RSA; 128 ve 256 bit), TLS 1.3 için TLS_AES_128_GCM_SHA256 ve TLS_AES_256_GCM_SHA384, secp256r1 ve ffdhe2048 dahil gruplar, SHA-1 içermeyen imza şemaları, güvenli yeniden anlaşma (RFC 5746), oturum devamı, tam yeniden anlaşma, anahtar güncelleme, CRL ile iptal ve tolerans süresi.
Desteklenmeyen:
| Standartta | Durum |
|---|---|
CBC şifre takımları, zorunlu TLS_RSA_WITH_AES_128_CBC_SHA256 dahil | Sunulmaz. CBC, Encrypt-then-MAC (RFC 7366) ile kullanılmalıdır ve kullanılan TLS yığını bunu desteklemez; EtM’siz CBC teklifi uyumlu bir eşin bağlantıyı kesmesine yol açar. Yalnızca RSA anahtar değişimi bilen eski cihazlar bağlanamaz |
TLS 1.3 TLS_AES_128_CCM_SHA256 | Desteklenmez. Zorunlu GCM takımları sunulduğu için uyumlu bir eşle her zaman ortak bir takım bulunur |
| TLS 1.3’te istemci sertifikası için OCSP stapling | Desteklenmez; iptal CRL ile yapılır |