chrome.certificateProvider

refresh date: 2026-09-25 robots: noindex

Açıklama

Bu API'yi kullanarak sertifikaları platforma gösterebilirsiniz. Platform, bu sertifikaları TLS kimlik doğrulamaları için kullanabilir.

İzinler

certificateProvider

Kullanılabilirlik

Chrome 46 ve sonraki sürümler Yalnızca ChromeOS

Kullanım

İstemci sertifikalarını ChromeOS'e göstermek için bu API'nin tipik kullanımı aşağıdaki adımları içerir:

  • Uzantı, onCertificatesUpdateRequested ve onSignatureRequested etkinlikleri için kaydolur.
  • Uzantı, başlatma işleminden sonra ilk sertifika listesini sağlamak için setCertificates'ı çağırır.
  • Uzantı, kullanılabilir sertifikalar listesindeki değişiklikleri izler ve her değişikliği tarayıcıya bildirmek için setCertificates'ı çağırır.
  • TLS el sıkışması sırasında tarayıcı bir istemci sertifikası isteği alır. onCertificatesUpdateRequested etkinliğiyle tarayıcı, uzantıdan o anda sağladığı tüm sertifikaları bildirmesini ister.
  • Uzantı, setCertificates yöntemini kullanarak mevcut sertifikaları bildirir.
  • Tarayıcı, mevcut tüm sertifikaları uzak ana makineden gelen istemci sertifikası isteğiyle eşleştirir. Eşleşmeler, kullanıcıya bir seçim iletişim kutusunda sunulur.
  • Kullanıcı bir sertifika seçerek kimlik doğrulamasını onaylayabilir veya iptal edebilir.

Sertifika seçimi iletişim kutusu

  • Kullanıcı kimlik doğrulama işlemini iptal ederse veya istekle eşleşen sertifika yoksa TLS istemci kimlik doğrulaması iptal edilir.
  • Aksi takdirde, kullanıcı bu uzantı tarafından sağlanan bir sertifikayla kimlik doğrulamayı onaylarsa tarayıcı, TLS el sıkışmasına devam etmek için uzantıdan verileri imzalamasını ister. İstek, onSignatureRequested etkinliği olarak gönderilir.
  • Bu etkinlik, giriş verilerini içerir, imza oluşturmak için hangi algoritmanın kullanılması gerektiğini bildirir ve bu uzantı tarafından bildirilen sertifikalardan birini belirtir. Uzantı, referans verilen sertifikayla ilişkili özel anahtarı kullanarak belirli veriler için bir imza oluşturmalıdır. İmza oluşturmak için asıl imzalamadan önce bir DigestInfo eklenmesi ve sonucun doldurulması gerekebilir.
  • Uzantı, reportSignature yöntemini kullanarak imzayı tarayıcıya geri gönderir. İmza hesaplanamadıysa yöntem imza olmadan çağrılmalıdır.
  • İmza sağlandıysa tarayıcı TLS el sıkışmasını tamamlar.

Gerçek adım sırası farklı olabilir. Örneğin, otomatik olarak sertifika seçmeye yönelik kurumsal politika kullanılıyorsa kullanıcıdan sertifika seçmesi istenmez (AutoSelectCertificateForUrls ve Kullanıcılar için Chrome politikaları bölümüne bakın).

Uzantıda bu, aşağıdaki snippet'e benzer şekilde görünebilir:

function collectAvailableCertificates() {
  // Return all certificates that this Extension can currently provide.
  // For example:
  return [{
    certificateChain: [new Uint8Array(...)],
    supportedAlgorithms: ['RSASSA_PKCS1_v1_5_SHA256']
  }];
}

// The Extension calls this function every time the currently available list of
// certificates changes, and also once after the Extension's initialization.
function onAvailableCertificatesChanged() {
  chrome.certificateProvider.setCertificates({
    clientCertificates: collectAvailableCertificates()
  });
}

function handleCertificatesUpdateRequest(request) {
  // Report the currently available certificates as a response to the request
  // event. This is important for supporting the case when the Extension is
  // unable to detect the changes proactively.
  chrome.certificateProvider.setCertificates({
    certificatesRequestId: request.certificatesRequestId,
    clientCertificates: collectAvailableCertificates()
  });
}

// Returns a private key handle for the given DER-encoded certificate.
// |certificate| is an ArrayBuffer.
function getPrivateKeyHandle(certificate) {...}

// Digests and signs |input| with the given private key. |input| is an
// ArrayBuffer. |algorithm| is an Algorithm.
// Returns the signature as ArrayBuffer.
function signUnhashedData(privateKey, input, algorithm) {...}

function handleSignatureRequest(request) {
  // Look up the handle to the private key of |request.certificate|.
  const key = getPrivateKeyHandle(request.certificate);
  if (!key) {
    // Handle if the key isn't available.
    console.error('Key for requested certificate not available.');

    // Abort the request by reporting the error to the API.
    chrome.certificateProvider.reportSignature({
      signRequestId: request.signRequestId,
      error: 'GENERAL_ERROR'
    });
    return;
  }

  const signature = signUnhashedData(key, request.input, request.algorithm);
  chrome.certificateProvider.reportSignature({
    signRequestId: request.signRequestId,
    signature: signature
  });
}

chrome.certificateProvider.onCertificatesUpdateRequested.addListener(
    handleCertificatesUpdateRequest);
chrome.certificateProvider.onSignatureRequested.addListener(
    handleSignatureRequest);

Türler

Algorithm

Chrome 86 ve sonraki sürümler

Desteklenen şifreleme imzası algoritmalarının türleri.

Enum

"RSASSA_PKCS1_v1_5_MD5_SHA1"
MD5-SHA-1 karma oluşturma ile RSASSA PKCS#1 v1.5 imza algoritmasını belirtir. Uzantı, DigestInfo öneki eklememeli, yalnızca PKCS#1 dolgusu eklemelidir. Bu algoritma kullanımdan kaldırılmıştır ve 109 sürümünden itibaren Chrome tarafından hiçbir zaman istenmeyecektir.

"RSASSA_PKCS1_v1_5_SHA1"
SHA-1 karma işleviyle RSASSA PKCS#1 v1.5 imza algoritmasını belirtir.

"RSASSA_PKCS1_v1_5_SHA256"
SHA-256 karma işleviyle RSASSA PKCS#1 v1.5 imza algoritmasını belirtir.

"RSASSA_PKCS1_v1_5_SHA384"
SHA-384 karma işleviyle RSASSA PKCS#1 v1.5 imza algoritmasını belirtir.

"RSASSA_PKCS1_v1_5_SHA512"
SHA-512 karma işleviyle RSASSA PKCS#1 v1.5 imza algoritmasını belirtir.

"RSASSA_PSS_SHA256"
SHA-256 karma işlevi, MGF1 maske oluşturma işlevi ve karma ile aynı boyuttaki salt ile RSASSA PSS imza algoritmasını belirtir.

"RSASSA_PSS_SHA384"
SHA-384 karma işlevi, MGF1 maske oluşturma işlevi ve karma ile aynı boyutta salt içeren RSASSA PSS imza algoritmasını belirtir.

"RSASSA_PSS_SHA512"
SHA-512 karma işlevi, MGF1 maske oluşturma işlevi ve karma ile aynı boyuttaki salt ile RSASSA PSS imza algoritmasını belirtir.

CertificateInfo

Özellikler

  • sertifika

    ArrayBuffer

    X.509 sertifikasının DER kodlaması olmalıdır. Şu anda yalnızca RSA anahtarlarının sertifikaları desteklenmektedir.

  • supportedHashes

    Bu sertifika için desteklenen tüm karma değerlere ayarlanmalıdır. Bu uzantıdan yalnızca bu karma algoritmalarından biriyle hesaplanan özetlerin imzaları istenir. Bu, azalan karma tercihi sırasına göre olmalıdır.

CertificatesUpdateRequest

Chrome 86 ve sonraki sürümler

Özellikler

  • certificatesRequestId

    sayı

    setCertificates'e iletilecek istek tanımlayıcısı.

ClientCertificateInfo

Chrome 86 ve sonraki sürümler

Özellikler

  • certificateChain

    ArrayBuffer[]

    Dizinin ilk öğesi, X.509 istemci sertifikasının DER kodlaması olmalıdır.

    Bu, tam olarak bir sertifika içermelidir.

  • supportedAlgorithms

    Bu sertifika için desteklenen tüm algoritmalar. Uzantıdan yalnızca bu algoritmalardan birini kullanan imzalar istenir.

Error

Chrome 86 ve sonraki sürümler

Uzantının bildirebileceği hata türleri.

Değer

"GENERAL_ERROR"

Hash

Kullanımdan kaldırıldı. Algorithm ile değiştirildi.

Enum

"MD5_SHA1"
MD5 ve SHA1 karma oluşturma algoritmalarını belirtir.

"SHA1"
SHA1 karma algoritmasını belirtir.

"SHA256"
SHA256 karma oluşturma algoritmasını belirtir.

"SHA384"
SHA384 karma oluşturma algoritmasını belirtir.

"SHA512"
SHA512 karma oluşturma algoritmasını belirtir.

PinRequestErrorType

Chrome 57 ve sonraki sürümler

requestPin işlevi aracılığıyla kullanıcıya gösterilebilecek hata türleri.

Enum

"INVALID_PIN"
PIN'in geçersiz olduğunu belirtir.

"INVALID_PUK"
PUK'un geçersiz olduğunu belirtir.

"MAX_ATTEMPTS_EXCEEDED"
Maksimum deneme sayısının aşıldığını belirtir.

"UNKNOWN_ERROR"
Hatanın yukarıdaki türlerle temsil edilemeyeceğini belirtir.

PinRequestType

Chrome 57 ve sonraki sürümler

requestPin işleviyle uzantı tarafından istenen kodun türü.

Enum

"PIN"
İstenen kodun PIN olduğunu belirtir.

"PUK"
İstenen kodun PUK olduğunu belirtir.

PinResponseDetails

Chrome 57 ve sonraki sürümler

Özellikler

  • userInput

    string isteğe bağlı

    Kullanıcı tarafından sağlanan kod. Kullanıcı iletişim kutusunu kapattıysa veya başka bir hata oluştuysa boş bırakılır.

ReportSignatureDetails

Chrome 86 ve sonraki sürümler

Özellikler

  • hata

    "GENERAL_ERROR"
     isteğe bağlı

    İmza oluşturulurken meydana gelen hata (varsa).

  • signRequestId

    sayı

    onSignatureRequested etkinliği aracılığıyla alınan istek tanımlayıcısı.

  • signature

    ArrayBuffer isteğe bağlı

    Başarıyla oluşturulmuşsa imza.

RequestPinDetails

Chrome 57 ve sonraki sürümler

Özellikler

  • attemptsLeft

    number isteğe bağlı

    Kalan deneme sayısı. Bu, herhangi bir kullanıcı arayüzünün bu bilgileri kullanıcıya sunabilmesi için sağlanır. Chrome'un bu kısıtlamayı uygulaması beklenmez. Bunun yerine, PIN isteklerinin sayısı aşıldığında uzantı tarafından errorType = MAX_ATTEMPTS_EXCEEDED ile stopPinRequest çağrılmalıdır.

  • errorType

    PinRequestErrorType isteğe bağlı

    Kullanıcıya gösterilen hata şablonu. Önceki istek başarısız olduysa kullanıcıya başarısızlık nedenini bildirmek için bu değer ayarlanmalıdır.

  • requestType

    PinRequestType isteğe bağlı

    İstenen kodun türü. Varsayılan değer PIN'dir.

  • signRequestId

    sayı

    SignRequest'te Chrome tarafından verilen kimlik.

SetCertificatesDetails

Chrome 86 ve sonraki sürümler

Özellikler

  • certificatesRequestId

    number isteğe bağlı

    onCertificatesUpdateRequested yanıtı olarak çağrıldığında, alınan certificatesRequestId değerini içermelidir. Aksi takdirde ayarlanmamalıdır.

  • clientCertificates

    Şu anda kullanılabilen istemci sertifikalarının listesi.

  • hata

    "GENERAL_ERROR"
     isteğe bağlı

    Sertifikalar ayıklanırken oluşan hata (varsa). Bu hata, uygun olduğunda kullanıcıya gösterilir.

SignatureRequest

Chrome 86 ve sonraki sürümler

Özellikler

  • algoritma

    Kullanılacak imza algoritması.

  • sertifika

    ArrayBuffer

    X.509 sertifikasının DER kodlaması. Uzantı, ilişkili özel anahtarı kullanarak input öğesini imzalamalıdır.

  • giriş

    ArrayBuffer

    İmzalanacak veriler. Verilere karma oluşturma işlemi uygulanmadığını unutmayın.

  • signRequestId

    sayı

    reportSignature'e iletilecek istek tanımlayıcısı.

SignRequest

Özellikler

  • sertifika

    ArrayBuffer

    X.509 sertifikasının DER kodlaması. Uzantı, ilişkili özel anahtarı kullanarak digest öğesini imzalamalıdır.

  • özet

    ArrayBuffer

    İmzalanması gereken özet.

  • digest oluşturmak için kullanılan karma algoritmasını ifade eder.

  • signRequestId

    sayı

    Chrome 57 ve sonraki sürümler

    Uzantının, benzersiz kimlik gerektiren bir yöntemi (ör. requestPin) çağırması gerektiğinde kullanacağı benzersiz kimlik.

StopPinRequestDetails

Chrome 57 ve sonraki sürümler

Özellikler

  • errorType

    PinRequestErrorType isteğe bağlı

    Hata şablonu. Varsa kullanıcıya gösterilir. Akışın durdurulma nedenini (ör. MAX_ATTEMPTS_EXCEEDED) içerir.

  • signRequestId

    sayı

    SignRequest'te Chrome tarafından verilen kimlik.

Yöntemler

reportSignature()

Promise Chrome 86+
chrome.certificateProvider.reportSignature(
  details: ReportSignatureDetails,
  callback?: function,
)
: Promise<void>

onSignatureRequested için yanıt olarak çağrılmalıdır.

Uzantı, her onSignatureRequested etkinliği için bu işlevi çağırmalıdır. API uygulaması, bir süre sonra bu çağrıyı beklemeyi durdurur ve bu işlev çağrıldığında zaman aşımı hatası verir.

Parametreler

  • ayrıntılar
  • callback

    function isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Chrome 96+

    Promise'ler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırma işlevlerini kullanması gerekir.

requestPin()

Promise Chrome 57+
chrome.certificateProvider.requestPin(
  details: RequestPinDetails,
  callback?: function,
)
: Promise<PinResponseDetails | undefined>

Kullanıcıdan PIN ister. Aynı anda yalnızca bir devam eden isteğe izin verilir. Başka bir akış devam ederken gönderilen istekler reddedilir. Devam eden başka bir akış varsa daha sonra tekrar denemek uzantının sorumluluğundadır.

Parametreler

İadeler

  • Promise<PinResponseDetails | undefined>

    Chrome 96+

    Kullanıcı PIN'i girdiğinde çözümlenen bir Promise döndürür. İletişim kutusu isteği başarısız bir şekilde tamamlanırsa (ör. iletişim kutusu kullanıcı tarafından iptal edildiyse veya gösterilmesine izin verilmediyse) hata vererek reddeder.

    Promise'ler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırma işlevlerini kullanması gerekir.

setCertificates()

Promise Chrome 86+
chrome.certificateProvider.setCertificates(
  details: SetCertificatesDetails,
  callback?: function,
)
: Promise<void>

Tarayıcıda kullanılacak sertifikaların listesini ayarlar.

Uzantı, başlatma işleminden sonra ve mevcut sertifika grubundaki her değişiklikte bu işlevi çağırmalıdır. Uzantı, bu etkinlik her alındığında onCertificatesUpdateRequested yanıtı olarak da bu işlevi çağırmalıdır.

Parametreler

  • ayrıntılar

    Ayarlanacak sertifikalar. Geçersiz sertifikalar yoksayılır.

  • callback

    function isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Chrome 96+

    Tamamlandığında çözümlenen bir Promise döndürür.

    Promise'ler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırma işlevlerini kullanması gerekir.

stopPinRequest()

Promise Chrome 57+
chrome.certificateProvider.stopPinRequest(
  details: StopPinRequestDetails,
  callback?: function,
)
: Promise<void>

requestPin işlevi tarafından başlatılan PIN isteğini durdurur.

Parametreler

  • ayrıntılar

    İstek akışının durdurulma nedeni hakkında ayrıntıları içerir.

  • callback

    function isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Chrome 96+

    PIN iletişim kutusunu kapatma isteği tamamlandığında çözümlenen bir Promise döndürür.

    Promise'ler yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformların geri çağırma işlevlerini kullanması gerekir.

Etkinlikler

onCertificatesRequested

Chrome 47 ve sonraki sürümler &leq; MV2 Chrome 86'dan itibaren desteği sonlandırıldı
chrome.certificateProvider.onCertificatesRequested.addListener(
  callback: function,
)

Bunun yerine onCertificatesUpdateRequested kullanın.

Bu etkinlik, tarayıcı bu uzantı tarafından sağlanan mevcut sertifika listesini her istediğinde tetiklenir. Uzantı, geçerli sertifika listesiyle reportCallback yöntemini tam olarak bir kez çağırmalıdır.

Parametreler

  • callback

    işlev

    callback parametresi şu şekilde görünür:

    (reportCallback: function) => void

    • reportCallback

      işlev

      reportCallback parametresi şu şekilde görünür:

      (certificates: CertificateInfo[], callback: function) => void

      • certificates
      • callback

        işlev

        callback parametresi şu şekilde görünür:

        (rejectedCertificates: ArrayBuffer[]) => void

        • rejectedCertificates

          ArrayBuffer[]

onCertificatesUpdateRequested

Chrome 86 ve sonraki sürümler
chrome.certificateProvider.onCertificatesUpdateRequested.addListener(
  callback: function,
)

Bu etkinlik, setCertificates aracılığıyla ayarlanan sertifikalar yetersizse veya tarayıcı güncel bilgi isterse tetiklenir. Uzantı, güncellenmiş sertifika listesi ve alınan certificatesRequestId ile setCertificates yöntemini çağırmalıdır.

Parametreler

onSignatureRequested

Chrome 86 ve sonraki sürümler
chrome.certificateProvider.onSignatureRequested.addListener(
  callback: function,
)

Bu etkinlik, tarayıcının setCertificates aracılığıyla bu uzantı tarafından sağlanan bir sertifikayı kullanarak bir mesajı imzalaması gerektiğinde tetiklenir.

Uzantı, uygun algoritmayı ve özel anahtarı kullanarak request adresinden gelen giriş verilerini imzalamalı ve alınan signRequestId ile reportSignature işlevini çağırarak döndürmelidir.

Parametreler

onSignDigestRequested

&leq; MV2 Chrome 86'dan itibaren desteği sonlandırıldı
chrome.certificateProvider.onSignDigestRequested.addListener(
  callback: function,
)

Bunun yerine onSignatureRequested kullanın.

Bu etkinlik, tarayıcının bir onCertificatesRequested etkinliğine yanıt olarak bu uzantı tarafından sağlanan bir sertifikayı kullanarak bir iletiyi imzalaması gerektiğinde tetiklenir. Uzantı, uygun algoritmayı ve özel anahtarı kullanarak request içindeki verileri imzalamalı ve reportCallback yöntemini çağırarak döndürmelidir. reportCallback tam olarak bir kez çağrılmalıdır.

Parametreler

  • callback

    işlev

    callback parametresi şu şekilde görünür:

    (request: SignRequest, reportCallback: function) => void

    • istek
    • reportCallback

      işlev

      Chrome 47 ve sonraki sürümler

      reportCallback parametresi şu şekilde görünür:

      (signature?: ArrayBuffer) => void

      • signature

        ArrayBuffer isteğe bağlı