CMP Server
SecTrail CM, kendi bünyesinde bir CMP Server (Certificate Management Protocol - RFC 4210, HTTP taşıması RFC 6712) barındırır. CMP; özellikle endüstriyel otomasyon (OT), telekom altyapısı (5G/LTE baz istasyonları), IoT cihazları ve gömülü sistemlerde kullanılan, kapsamlı bir sertifika yönetim protokolüdür.
CMP desteği bulunan cihazlar, üzerine ek bir ajan (agent) kurmaya gerek kalmadan doğrudan SecTrail CM'den sertifika alabilir. Sertifikalar, SecTrail CM'in yönettiği CA'lar (Local CA, Microsoft ADCS, DigiCert vb.) tarafından, sizin tanımladığınız template kurallarına göre düzenlenir.
- CMP Server: Mesajlar kendi kendini korur; kimlik doğrulama paylaşılan sır (PasswordBasedMac) veya cihazın elindeki sertifikayla imza üzerinden yapılır. Endüstriyel ve telekom cihazlarında yaygındır.
- EST Server: HTTPS üzerinde çalışır; HTTP Basic veya mTLS ile kimlik doğrulama yapar.
- SCEP Server: En geniş cihaz desteğine sahip protokoldür; challenge parolası ile kimlik doğrulama yapar.
Sağladığı Avantajlar
- Endüstri standardı: RFC 4210 / RFC 6712 uyumlu; OpenSSL
cmpgibi standart istemcilerle ve CMP destekleyen cihazlarla çalışır - Esnek kimlik doğrulama: Paylaşılan sır (PBM), sertifika imzası veya ikisinden biri kabul edilebilir
- Mesaj seviyesinde koruma: Her istek ve yanıt MAC veya imza ile korunur
- Manuel onay desteği: İstenirse kayıt talepleri, bir yetkili onaylayana kadar bekletilir; onay iş akışı (workflow) ve e-posta bildirimleriyle entegre çalışır
- Tam görünürlük: Tüm kayıt işlemleri ve düzenlenen sertifikalar kayıt altına alınır ve envantere işlenir
Çalışma Mantığı
CMP Server'ın temel bileşenleri şunlardır:
| Bileşen | Açıklama |
|---|---|
| Profile | Bir CMP endpoint'ini tanımlar. Hangi template ile sertifika üretileceğini, istemci kimlik doğrulama yöntemini ve onay ayarlarını belirler. |
| Transaction | Cihazların gerçekleştirdiği her kayıt işleminin kaydı. |
Akış şu şekilde ilerler:
- Yönetici bir CMP Profile oluşturur; profili bir sertifika template'ine bağlar ve kimlik doğrulama yöntemini seçer.
- Cihaz, sertifika talebini (
ir,crveyap10cr) paylaşılan sırdan türetilen bir MAC veya kendi sertifikasıyla attığı imza ile koruyarak gönderir. - Kimlik doğrulaması başarılıysa sertifika, template kurallarına göre düzenlenir, envantere eklenir ve cihaza döndürülür.
- Cihaz, aldığı sertifikayı
certConfmesajıyla onaylar; sunucupkiConfile işlemi kapatır. - Profilde manuel onay açıksa talep pending olarak bekletilir; cihaz
pollReqile periyodik olarak sorgular ve onay verildiğinde sertifikasını alır.
Bir CMP profili yalnızca bağlı olduğu template'e karşı sertifika üretebilir. Template, hangi CA'nın kullanılacağını, geçerlilik süresini ve diğer sertifika parametrelerini belirler. Template yönetimi için bkz. Inventory → Issue Certificate → Templates.
CMP Endpoint'i
Her profil, kendi Label değeri üzerinden ayrı bir endpoint alır. CMP tek bir adres kullanır; istemci ikili (binary) PKIMessage'ı POST ile gönderir (Content-Type: application/pkixcmp), yapılacak işlem mesajın gövde tipinden anlaşılır:
| Endpoint | Açıklama |
|---|---|
/cmp/{label} | Tüm CMP mesajlarının gönderildiği adres |
| Mesaj | Açıklama |
|---|---|
ir | Initialization Request - ilk sertifika kaydı |
cr | Certification Request - cihazın elindeki sertifikayla ek/yeni sertifika talebi |
p10cr | PKCS#10 CSR ile sertifika talebi |
certConf | İstemcinin aldığı sertifikayı onaylaması |
pollReq | Onay bekleyen talebin durumunun sorgulanması |
Pasif (inactive) bir profilin veya tanımsız bir label'ın endpoint'i 404 döner. Korumasız (MAC veya imza içermeyen) mesajlar reddedilir. CMP seviyesindeki hatalar HTTP 200 ile, bir error mesajı içinde iletilir.
CMP Profilleri (Profiles)
CMP Profili Oluşturma
Certificate Authorities (CA) > CMP Server > CMP Profiles bölümüne gidin ve Create butonuna tıklayın:

Aşağıdaki bilgileri girin:
- Label (zorunlu): Profilin URL yol parçası (örn.
devices). İstemcilerin istek gönderdiği endpoint/cmp/{label}biçiminde oluşur. Yalnızca harf, rakam, nokta, tire ve alt çizgi kullanılabilir ve tüm tenant'lar arasında benzersiz olmalıdır. - Template (zorunlu): Bu profil üzerinden düzenlenecek sertifikaların template'i. Sertifikayı imzalayacak CA'yı, geçerlilik süresini ve profil bilgilerini belirler.
- Client authentication (zorunlu): İstemcinin kimliğini nasıl kanıtlayacağı:
- Shared secret (PBM): İstemci, mesajı paylaşılan sırdan türetilen bir PasswordBasedMac ile korur.
- Certificate signature: İstemci, mesajı elindeki bir sertifikayla imzalar. İmzalayan sertifika, profilin template'ine bağlı CA tarafından düzenlenmiş olmalıdır.
- Shared secret or signature: İki yöntemden herhangi biri kabul edilir.
- Shared secret (PBM kullanılıyorsa zorunlu): PasswordBasedMac için kullanılan paylaşılan sır. Yalnızca yazdırılabilir ASCII karakterler kullanılabilir; ASCII dışı bir karakter iki uçta farklı kodlanır ve asla eşleşmez. Düzenleme ekranında boş bırakılırsa mevcut sır korunur.
- Approval: Require manual approval açıldığında, kayıt talepleri bir yetkili onaylayana kadar pending durumunda bekletilir. Bkz. Manuel Onay.
- Description (opsiyonel): Profili açıklayan kısa not
- Status: Profilin etkin (Active) olup olmadığı
Submit butonuna tıklayarak profili oluşturun.
Sunucu, yanıtı istemcinin kullandığı yöntemle korur: PBM ile gelen isteklere aynı paylaşılan sırla MAC'lenmiş, imzalı gelen isteklere ise template'e bağlı CA tarafından imzalanmış yanıt döner. İmza kullanan istemcilerde, yanıtı doğrulamak için bu CA sertifikası güvenilir (trusted) olarak tanımlanmalıdır.
CMP Profil Listesi
Oluşturulan profiller Certificate Authorities (CA) > CMP Server > CMP Profiles listesinde görüntülenir:

Liste ekranında aşağıdaki bilgiler gösterilir:
| Sütun | Açıklama |
|---|---|
| Label | Profilin URL yol parçası ve endpoint adı |
| Template | Bağlı olduğu sertifika template'i ve template'in CA tipi (örn. LocalCA, DigiCert) |
| Client authentication | Kabul edilen kimlik doğrulama yöntemi (Shared secret (PBM), Certificate signature, Shared secret or signature) |
| Shared secret | Paylaşılan sırrın tanımlı olup olmadığı (Set / Not set). Sırrın kendisi gösterilmez. |
| Require manual approval | Manuel onayın etkin olup olmadığı (✓ / —) |
| Active | Profilin etkin (Active) veya devre dışı (Inactive) durumu |
| Created | Profilin oluşturulma tarihi |
| Description | Profil açıklaması |
Profil İşlemleri
- Edit: Profil ayarlarını düzenleyin
- Aktif/Pasif: Satır sonundaki anahtar (toggle) ile profili devre dışı bırakın veya yeniden etkinleştirin
- Delete: Profili silin
- Export: Listeyi dışa aktarın
Bir profil pasif hâle getirildiğinde, o profile ait endpoint üzerinden yeni sertifika kaydı yapılamaz. Profile bağlı cihazların sertifika süreçlerinin etkileneceğini göz önünde bulundurun.
Manuel Onay
Profilde Require manual approval açıldığında form üzerinde ek alanlar görünür:
- Approver groups: Amacı Approver olan Ownership grupları. Bu grupların üyelerine onay talebi gönderilir. Gruplar Ownership → Groups altında yönetilir.
- Approver e-mails: Onay talebinin gönderileceği ek e-posta adresleri.
- Mail Subject / Mail Content: Onaylayıcılara gönderilen e-postanın konusu ve talep bilgilerinin üzerinde gösterilen mesaj. Boş bırakılırsa varsayılan metin kullanılır.
Onay süreci şu şekilde işler:
- Cihaz
ir,crveyap10crgönderir; talep pending olarak kaydedilir ve cihaza "waiting" durumunda bir yanıt döner. - Talep için bir onay iş akışı (workflow) başlatılır ve onaylayıcılara talep bilgilerini içeren bir e-posta gönderilir.
- Yetkili, talebi iş akışı üzerinden veya CMP Transactions ekranındaki Approve (✓) / Deny (✕) butonlarıyla sonuçlandırır.
- Cihaz, aynı Transaction ID ile
pollReqgönderir (önerilen sorgu aralığı 30 saniyedir). Onaylanan talepte sertifikayı alır, reddedilen talepte red yanıtı alır.
Cihaz sorgulamak yerine aynı anahtarla yeni bir Transaction ID ile talebini yeniden gönderirse, ikinci bir onay talebi oluşturulmaz; bekleyen talep yeni Transaction ID'ye taşınır. Daha önce onaylanmış bir talep tekrar gönderilirse, düzenlenmiş sertifika doğrudan teslim edilir.
CMP İşlemleri (Transactions)
Cihazların gerçekleştirdiği tüm kayıt işlemleri Certificate Authorities (CA) > CMP Server > CMP Transactions bölümünden takip edilir:

Liste ekranında aşağıdaki bilgiler gösterilir:
| Sütun | Açıklama |
|---|---|
| CMP Profile | İşlemin gerçekleştiği CMP profili |
| Operation | İşlem tipi (ir, cr, p10cr) |
| Transaction ID | İstemcinin CMP mesajında gönderdiği işlem numarası. Bekleyen talepler bu numara ile sorgulanır. |
| Remote IP Address | İsteği gönderen cihazın IP adresi |
| Common Name | Talep edilen sertifikanın CN değeri |
| Status | İşlem sonucu (success, pending, failure) ve HTTP durum kodu |
| Certificate | Düzenlenen sertifikanın envanterdeki kaydına bağlantı |
| Created | İşlemin gerçekleştiği tarih |
pending durumundaki işlemlerde, satır sonunda Approve (✓) ve Deny (✕) butonları görünür. Delete butonu ile seçili işlem kayıtları silinebilir, Export ile liste dışa aktarılabilir.
Başarılı işlemlerde Certificate sütunundaki sertifika numarasına tıklayarak envanterdeki kayda gidebilir; sertifikayı indirebilir, izleyebilir veya iptal (revoke) edebilirsiniz.
Kimlik doğrulama hataları (yanlış paylaşılan sır, profilin kabul etmediği yöntem, profilin CA'sına zincirlenmeyen imzalayan sertifika) istemciye bir CMP error mesajı olarak döner. İstemci tarafındaki hata metni, sorunun nedenini belirtir.
İstemci Yapılandırma Örnekleri
Aşağıdaki örnekler OpenSSL 3.x ile birlikte gelen openssl cmp komutunu kullanır. cm.sectrail.local yerine kendi SecTrail CM adresinizi, devices yerine profilinizin Label değerini kullanın.
Paylaşılan Sır (PBM) ile İlk Kayıt (ir)
openssl genrsa -out device.key 2048
openssl cmp -cmd ir \
-server https://cm.sectrail.local/cmp/devices \
-ref device01 \
-secret pass:PAYLASILAN_SIR \
-newkey device.key \
-subject "/CN=device01.sectrail.local" \
-sans "device01.sectrail.local" \
-certout device.crt
Sertifika İmzası ile Yeni Sertifika Talebi (cr)
Cihaz, profilin CA'sından daha önce aldığı sertifikayla mesajı imzalar. Sunucu yanıtı CA tarafından imzalandığından, CA sertifikası -trusted ile verilmelidir:
openssl genrsa -out new.key 2048
openssl cmp -cmd cr \
-server https://cm.sectrail.local/cmp/devices \
-cert device.crt -key device.key \
-trusted ca.crt \
-newkey new.key \
-subject "/CN=device01.sectrail.local" \
-certout new.crt
PKCS#10 CSR ile Talep (p10cr)
openssl cmp -cmd p10cr \
-server https://cm.sectrail.local/cmp/devices \
-ref device01 \
-secret pass:PAYLASILAN_SIR \
-csr device.csr \
-certout device.crt
Profilde manuel onay açıksa openssl cmp, talep onaylanana kadar pollReq ile otomatik olarak sorgulamaya devam eder.