Aracılığıyla paylaş


SERTIFIKA OLUŞTUR (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'de Azure Synapse AnalyticsSQL veritabanı

SQL Server'daki bir veritabanına sertifika ekler.

Bu özellik, Veri Katmanı Application Framework (DACFx) kullanılarak veritabanı dışarı aktarma işlemiyle uyumsuzdur. Dışarı aktarmadan önce tüm sertifikaları bırakmanız gerekir.

Note

SQL Server 2022'de (16.x), özel anahtarlara sahip sertifikalar, ortak anahtar çiftleri (PKCS) #12 veya kişisel bilgi değişimi (PFX) biçimi kullanılarak dosyalara veya ikili bloblara doğrudan yedeklenebilir veya geri yüklenebilir. Sistem tarafından oluşturulan tüm sertifikalar, SQL Server 2022'de (16.x) en düşük RSA-3072 gücüne sahiptir.

PKCS #12 veya PFX biçimi, sunucu sertifikasını, ara sertifikaları ve özel anahtarı tek bir dosyada depolamak için ikili bir biçimdir. PFX dosyaları genellikle ve .pfxgibi .p12 uzantılara sahiptir. Bu, MÜŞTERILERIN PVKConverter (PVK veya DER biçimi için) gibi dönüştürme araçlarını kullanma gereksinimini ortadan kaldırarak RC4 şifrelemesini yasaklayan geçerli güvenlik en iyi uygulama yönergelerine ve uyumluluk standartlarına uymasını kolaylaştırır.

Transact-SQL söz dizimi kuralları

Note

Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Syntax

-- Syntax for SQL Server and Azure SQL Database  
  
CREATE CERTIFICATE certificate_name [ AUTHORIZATION user_name ]   
    { FROM <existing_keys> | <generate_new_keys> }  
    [ ACTIVE FOR BEGIN_DIALOG = { ON | OFF } ]  
  
<existing_keys> ::=   
    ASSEMBLY assembly_name  
    | {   
        [ EXECUTABLE ] FILE = 'path_to_file'  
        [ WITH [FORMAT = 'PFX',]
          PRIVATE KEY ( <private_key_options> ) ]   
      }  
    | {   
        BINARY = asn_encoded_certificate  
        [ WITH PRIVATE KEY ( <private_key_options> ) ]  
      }  
<generate_new_keys> ::=   
    [ ENCRYPTION BY PASSWORD = 'password' ]   
    WITH SUBJECT = 'certificate_subject_name'   
    [ , <date_options> [ ,...n ] ]   
  
<private_key_options> ::=  
      {   
        FILE = 'path_to_private_key'  
         [ , DECRYPTION BY PASSWORD = 'password' ]  
         [ , ENCRYPTION BY PASSWORD = 'password' ]    
      }  
    |  
      {   
        BINARY = private_key_bits  
         [ , DECRYPTION BY PASSWORD = 'password' ]  
         [ , ENCRYPTION BY PASSWORD = 'password' ]    
      }  
  
<date_options> ::=  
    START_DATE = 'datetime' | EXPIRY_DATE = 'datetime'  
-- Syntax for Parallel Data Warehouse  
  
CREATE CERTIFICATE certificate_name   
    { <generate_new_keys> | FROM <existing_keys> }  
    [ ; ]  
  
<generate_new_keys> ::=   
    WITH SUBJECT = 'certificate_subject_name'   
    [ , <date_options> [ ,...n ] ]   
  
<existing_keys> ::=   
    {   
      FILE ='path_to_file'  
      WITH PRIVATE KEY   
         (   
           FILE = 'path_to_private_key'  
           , DECRYPTION BY PASSWORD ='password'   
         )  
    }  
  
<date_options> ::=  
    START_DATE ='datetime' | EXPIRY_DATE ='datetime'  

Arguments

certificate_name
Veritabanındaki sertifikanın adıdır.

YETKI user_name
Bu sertifikanın sahibi olan kullanıcının adıdır.

MONTAJ assembly_name
Veritabanına zaten yüklenmiş olan imzalı bir derlemeyi belirtir.

[ YÜRÜTÜLEBILIR ] FILE = 'path_to_file'
Sertifikayı içeren DER ile kodlanmış bir dosyanın dosya adı da dahil olmak üzere tam yolunu belirtir. YÜRÜTÜLEBILIR seçeneği kullanılırsa, dosya sertifika tarafından imzalanmış bir DLL'dir. path_to_file yerel bir yol veya bir ağ konumuna giden UNC yolu olabilir. Dosyaya SQL Server hizmet hesabının güvenlik bağlamında erişilir. Bu hesap gerekli dosya sistemi izinlerine sahip olmalıdır.

Important

Azure SQL Veritabanı, bir dosyadan sertifika oluşturmayı veya özel anahtar dosyalarını kullanmayı desteklemez.

İKILI = asn_encoded_certificate
ASN kodlanmış sertifika baytları ikili sabit olarak belirtilir.
için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

FORMAT = 'PFX'
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve üzeri
PFX dosyasından sertifika oluşturmayı belirtir. Bu yan tümce isteğe bağlıdır.

ÖZEL ANAHTARLA
Sertifikanın özel anahtarının SQL Server'a yüklendiğini belirtir. Sertifika bir derlemeden oluşturulurken bu yan tümce geçersizdir. Bir derlemeden oluşturulan bir sertifikanın özel anahtarını yüklemek için ALTER CERTIFICATE kullanın.

DOSYA ='path_to_private_key'
Özel anahtarın dosya adı da dahil olmak üzere tam yolunu belirtir. path_to_private_key yerel bir yol veya bir ağ konumuna giden UNC yolu olabilir. Dosyaya SQL Server hizmet hesabının güvenlik bağlamında erişilir. Bu hesap gerekli dosya sistemi izinlerine sahip olmalıdır.

Important

Bu seçenek, kapsanan bir veritabanında veya Azure SQL Veritabanı'nda kullanılamaz.

İKILI = private_key_bits
Şunlar için geçerlidir: SQL Server (SQL Server 2012 (11.x) ile başlayarak) ve Azure SQL Veritabanı.

İkili sabit olarak belirtilen özel anahtar bitleri. Bu bitler şifrelenmiş biçimde olabilir. Şifrelenirse, kullanıcının bir şifre çözme parolası sağlaması gerekir. Parola ilkesi denetimleri bu parolada gerçekleştirilmiyor. Özel anahtar bitleri PVK dosya biçiminde olmalıdır.

PAROLAYLA ŞIFRE ÇÖZME = 'key_password'
Bir dosyadan alınan özel anahtarın şifresini çözmek için gereken parolayı belirtir. Özel anahtar null parolayla korunuyorsa bu yan tümce isteğe bağlıdır. Özel anahtarı parola koruması olmadan bir dosyaya kaydetmek önerilmez. Parola gerekliyse ancak parola belirtilmemişse, deyimi başarısız olur.

PAROLAYLA ŞIFRELEME = 'parola'
Özel anahtarı şifrelemek için kullanılan parolayı belirtir. Bu seçeneği yalnızca sertifikayı parolayla şifrelemek istiyorsanız kullanın. Bu yan tümce atlanırsa, özel anahtar veritabanı ana anahtarı kullanılarak şifrelenir. parola , SQL Server örneğini çalıştıran bilgisayarın Windows parola ilkesi gereksinimlerini karşılamalıdır. Daha fazla bilgi için bkz. parola ilkesi .

KONU = 'certificate_subject_name'
Konu terimi, X.509 standardında tanımlandığı gibi sertifikanın meta verilerindeki bir alanı ifade eder. Konu en fazla 64 karakter uzunluğunda olmalıdır ve bu sınır Linux üzerinde SQL Server için zorunlu tutulur. Windows'da SQL Server için konu en fazla 128 karakter uzunluğunda olabilir. 128 karakteri aşan konular katalogda depolandığında kesilir, ancak sertifikayı içeren ikili büyük nesne (BLOB) tam konu adını korur.

START_DATE = 'tarih saati'
Sertifikanın geçerli olduğu tarihtir. Belirtilmezse, START_DATE geçerli tarihe eşit olarak ayarlanır. START_DATE UTC saatindedir ve tarih ve saate dönüştürülebilecek herhangi bir biçimde belirtilebilir.

EXPIRY_DATE = 'tarih saati'
Sertifikanın süresinin dolduğu tarihtir. Belirtilmezse, EXPIRY_DATE START_DATE bir yıl sonra bir tarihe ayarlanır. EXPIRY_DATE UTC saatindedir ve tarih ve saate dönüştürülebilecek herhangi bir biçimde belirtilebilir. SQL Server Hizmet Aracısı son kullanma tarihini denetler. Sertifikaları kullanarak Şifreleme ile yedekleme ayrıca son kullanma tarihini de denetler ve süresi dolmuş bir sertifikayla yeni bir yedekleme oluşturulmasına izin vermez, ancak süresi dolmuş bir sertifikayla geri yüklemelere izin verir. Ancak, sertifika veritabanı şifrelemesi veya Always Encrypted için kullanıldığında süre sonu uygulanmaz.

BEGIN_DIALOG için ETKİn = { ON | KAPALI }
Sertifikayı bir Hizmet Aracısı iletişim kutusu konuşmasının başlatıcısı için kullanılabilir hale getirir. Varsayılan değer ON'dır.

Remarks

Sertifika, X.509 standardını izleyen ve X.509 V1 alanlarını destekleyen veritabanı düzeyinde güvenli hale getirilebilir bir sertifikadır. CREATE CERTIFICATE bir dosyadan, ikili sabitten veya derlemeden sertifika yükleyebilir. Bu deyim ayrıca bir anahtar çifti oluşturabilir ve otomatik olarak imzalanan bir sertifika oluşturabilir.

Özel Anahtar şifrelenmiş biçimde = 2500 bayt olmalıdır <. SQL Server tarafından oluşturulan özel anahtarlar, SQL Server 2014 (12.x) ile 1024 bit uzunluğundadır ve SQL Server 2016 (13.x) ile başlayan 2048 bit uzunluğundadır. Dış kaynaktan içeri aktarılan özel anahtarların uzunluğu en az 384 bit ve uzunluğu en fazla 4.096 bittir. İçeri aktarılan özel anahtarın uzunluğu 64 bitin tamsayı katı olmalıdır. TDE için kullanılan sertifikalar 3456 bitlik özel anahtar boyutuyla sınırlıdır.

Sertifikanın seri numarasının tamamı depolanır, ancak sys.certificates katalog görünümünde yalnızca ilk 16 bayt görüntülenir.

Sertifikanın Veren alanının tamamı depolanır, ancak sys.certificates katalog görünümünde yalnızca ilk 884 bayt depolanır.

Özel anahtar , certificate_name tarafından belirtilen ortak anahtara karşılık gelir.

Bir kapsayıcıdan sertifika oluşturduğunuzda özel anahtarın yüklenmesi isteğe bağlıdır. Ancak SQL Server otomatik olarak imzalanan bir sertifika oluşturduğunda özel anahtar her zaman oluşturulur. Varsayılan olarak, özel anahtar veritabanı ana anahtarı kullanılarak şifrelenir. Veritabanı ana anahtarı yoksa ve parola belirtilmezse, deyimi başarısız olur.

ENCRYPTION BY PASSWORD Özel anahtar veritabanı ana anahtarıyla şifrelendiğinde bu seçenek gerekli değildir. Bu seçeneği yalnızca özel anahtar parolayla şifrelendiğinde kullanın. Parola belirtilmezse, sertifikanın özel anahtarı veritabanı ana anahtarı kullanılarak şifrelenir. Veritabanının ana anahtarı açılamıyorsa, bu yan tümcenin atlanması hataya neden olur.

Özel anahtar veritabanı ana anahtarıyla şifrelendiğinde şifre çözme parolası belirtmeniz gerekmez.

Note

Şifreleme ve imzalama için yerleşik işlevler sertifikaların son kullanma tarihlerini denetlemez. Bu işlevlerin kullanıcıları sertifika süre sonunun ne zaman denetleneceğine karar vermelidir.

Sertifikanın ikili açıklaması, CERTENCODED (Transact-SQL) ve CERTPRIVATEKEY (Transact-SQL) işlevleri kullanılarak oluşturulabilir. Sertifikayı başka bir veritabanına kopyalamak için CERTPRIVATEKEY ve CERTENCODED kullanan bir örnek için CERTENCODED (Transact-SQL) makalesindeki B örneğine bakın.

MD2, MD4, MD5, SHA ve SHA1 algoritmaları SQL Server 2016'da (13.x) kullanım dışıdır. SQL Server 2016'ya (13.x) kadar SHA1 kullanılarak otomatik olarak imzalanan bir sertifika oluşturulur. SQL Server 2017 (14.x) ile başlayarak, SHA2_256 kullanılarak otomatik olarak imzalanan bir sertifika oluşturulur.

Permissions

Veritabanı üzerinde CREATE CERTIFICATE izni gereklidir. Sertifikalara yalnızca Windows oturum açma bilgileri, SQL Server oturum açma bilgileri ve uygulama rolleri sahip olabilir. Gruplar ve roller sertifikaların sahibi olamaz.

Examples

A. Otomatik olarak imzalanan sertifika oluşturma

Aşağıdaki örnek adlı Shipping04bir sertifika oluşturur. Bu sertifikanın özel anahtarı parola kullanılarak korunur.

CREATE CERTIFICATE Shipping04   
   ENCRYPTION BY PASSWORD = 'pGFD4bb925DGvbd2439587y'  
   WITH SUBJECT = 'Sammamish Shipping Records',   
   EXPIRY_DATE = '20201031';  
GO  

B. Bir dosyadan sertifika oluşturma

Aşağıdaki örnek, veritabanında anahtar çiftini dosyalardan yükleyen bir sertifika oluşturur.

CREATE CERTIFICATE Shipping11   
    FROM FILE = 'c:\Shipping\Certs\Shipping11.cer'   
    WITH PRIVATE KEY (FILE = 'c:\Shipping\Certs\Shipping11.pvk',   
    DECRYPTION BY PASSWORD = 'sldkflk34et6gs%53#v00');  
GO   

Important

Azure SQL Veritabanı bir dosyadan sertifika oluşturmayı desteklemez.

C. İmzalı yürütülebilir dosyadan sertifika oluşturma

CREATE CERTIFICATE Shipping19   
    FROM EXECUTABLE FILE = 'c:\Shipping\Certs\Shipping19.dll';  
GO  

Alternatif olarak, dosyasından dll bir derleme oluşturabilir ve ardından derlemeden bir sertifika oluşturabilirsiniz.

CREATE ASSEMBLY Shipping19   
    FROM 'c:\Shipping\Certs\Shipping19.dll'   
    WITH PERMISSION_SET = SAFE;  
GO  
CREATE CERTIFICATE Shipping19 FROM ASSEMBLY Shipping19;  
GO  

Important

Azure SQL Veritabanı bir dosyadan sertifika oluşturmayı desteklemez.

Important

SQL Server 2017(14.x) ile başlayan 'CLR katı güvenlik' sunucu yapılandırma seçeneği, önce onlar için güvenliği ayarlamadan derlemelerin yüklenmesini engeller. Sertifikayı yükleyin, ondan bir oturum açın, bu oturum açma bilgilerini verin UNSAFE ASSEMBLY ve ardından derlemeyi yükleyin.

D. Otomatik olarak imzalanan sertifika oluşturma

Aşağıdaki örnek, şifreleme parolası belirtmeden adlı Shipping04 bir sertifika oluşturur. Bu örnek Analiz Platformu Sistemi (PDW) ile kullanılabilir.

CREATE CERTIFICATE Shipping04   
   WITH SUBJECT = 'Sammamish Shipping Records';  
GO  

E. PFX dosyasından sertifika oluşturma

CREATE CERTIFICATE Shipping04
    FROM FILE = 'c:\storedcerts\shipping04cert.pfx'
    WITH 
    FORMAT = 'PFX', 
	PRIVATE KEY (
        DECRYPTION BY PASSWORD = '9n34khUbhk$w4ecJH5gh'
	);  

Ayrıca Bkz.

SERTİFİKAYI DEĞİŞTİR (Transact-SQL)
DROP CERTİ (Transact-SQL)
YEDEKLEME SERTIFIKASI (Transact-SQL)
Şifreleme Hiyerarşisi
OLAY VERILERI (Transact-SQL)
CERTENCODED (Transact-SQL)
CERTPRIVATEKEY (Transact-SQL)
CERT_ID (Transact-SQL)
CERTPROPERTY (Transact-SQL)