İçeriğe geç

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.

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.

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ı).

AlanTipVarsayılanAçıklama
tlsEnabledBooleankapalıTLS’i açar
tlsMinVersionTLS 1.2 / TLS 1.3TLS 1.2En 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
tlsCertificateFileIdDosya—Bağlantının kendi sertifikası ve anahtarı (PKCS#12)
tlsCertificatePasswordGizli—PKCS#12 parolası; hiçbir yanıtta gösterilmez
tlsCaFileIdDosya—Güvenilen CA sertifikaları
tlsCrlFileIdDosya—İptal listesi (isteğe bağlı)
tlsTrustModeAny from CA / Listed from CAAny from CAHangi eşlerin kabul edileceği; aşağıdaki İzinli eşler bölümüne bakın
tlsResumptionMinutesInteger360TLS 1.2: oturum devamı aralığı (yeni anahtar, sertifika kontrolü yok). Yeniden anlaşma aralığından küçük olmalı
tlsRenegotiationMinutesInteger720TLS 1.2: tam yeniden anlaşma aralığı; iki sertifika da yeniden doğrulanır. 10 ile 1440 dakika arası
tlsKeyUpdateMinutesInteger0 (kapalı)TLS 1.3: anahtar güncelleme aralığı. Aşağıdaki uyarıya bakın
tlsRenegotiationTimeoutMsInteger10000Yeniden anlaşmanın tamamlanması için beklenen süre
tlsRevocationCheckMinutesInteger1440Açık bağlantıların CRL’e göre yeniden kontrol aralığı
tlsRevocationGraceHoursInteger0Sertifikası iptal edilen bir eşin bağlı kalabileceği süre; 0 = hemen kapatılır

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 CA modunda 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.

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}.

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}.

SürümMekanizmaNe olur
TLS 1.2Oturum devamı (tlsResumptionMinutes)İstemci yeni oturum anahtarları alır; sertifikalar yeniden kontrol edilmez
TLS 1.2Tam 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.3Anahtar 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.

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.

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].

OlayGünlük seviyesiNe zaman
HANDSHAKE_SUCCEEDEDBilgiBağlantı kuruldu; sürüm, şifre takımı ve eşin sertifikası yazılır
HANDSHAKE_FAILEDHataEl sıkışma başarısız (ortak sürüm / şifre yok, zaman aşımı, eşin uyarısı)
PEER_CERTIFICATE_MISSINGHataEş sertifika göndermedi
PEER_CERTIFICATE_UNTRUSTEDHataEşin sertifikası güvenilen CA’ya zincirlenmiyor
PEER_CERTIFICATE_EXPIRED / _NOT_YET_VALIDHataSertifikanın geçerlilik süresi dışında (iki ucun saatini kontrol edin)
PEER_KEY_TOO_WEAK / PEER_CERTIFICATE_TOO_LARGEHataZayıf anahtar / 8192 bayttan büyük sertifika
PEER_CERTIFICATE_REVOKEDHataCRL sertifikayı iptal etmiş; bağlantı kurulmaz ya da kapatılır
PEER_REVOKED_IN_GRACEUyarıSertifika iptal edildi; bağlantı tolerans süresi boyunca açık
CRL_UNAVAILABLE / CRL_EXPIRED / CRL_INVALIDUyarıCRL yok, süresi dolmuş ya da imzası geçersiz; bağlantı kesilmez
SESSION_RESUMEDBilgiTLS 1.2 oturum devamı
RENEGOTIATEDBilgiTLS 1.2 tam yeniden anlaşma; iki sertifika yeniden doğrulandı
RENEGOTIATION_FAILEDHataYeniden anlaşma tamamlanmadı; bağlantı kapatıldı
KEY_UPDATEDBilgiTLS 1.3 anahtar güncellemesi gönderildi
SESSION_FAILEDHataAçı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.

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:

StandarttaDurum
CBC şifre takımları, zorunlu TLS_RSA_WITH_AES_128_CBC_SHA256 dahilSunulmaz. 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_SHA256Desteklenmez. 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 staplingDesteklenmez; iptal CRL ile yapılır