OpenAI Mutual TLS umożliwia organizacjom skonfigurowanie dodatkowej warstwy zabezpieczeń dla ruchu OpenAI API. Po skonfigurowaniu żądania API powinny być kierowane do https://mtls.api.openai.com (lub https://mtls-eu.api.openai.com w przypadku klientów korzystających z rezydencji danych w UE), a ruch zostanie zaakceptowany tylko wtedy, gdy podany zostanie właściwy klucz API i certyfikat klienta. mTLS nie dotyczy panelu https://platform.openai.com. Ta funkcja jest obecnie w wersji beta.
Jak skonfigurować integrację mTLS?
Na pasku nawigacji ustawień zobaczysz kartę „Mutual TLS”.
Prześlij certyfikat
Aktywuj certyfikat
Po przesłaniu certyfikatu następnym krokiem jest aktywowanie certyfikatu. Gdy certyfikat zostanie aktywowany dla projektu, wszystkie żądania API kierowane do tego projektu zaczną wymagać również odpowiedniego certyfikatu klienta. Jeśli w projekcie aktywowano wiele certyfikatów, możesz przekazać dowolny odpowiadający im certyfikat klienta. Jeśli certyfikat zostanie aktywowany dla organizacji, będzie dotyczyć wszystkich żądań API i będzie „dziedziczony” przez wszystkie projekty.
Wymagania dotyczące certyfikatu CA
Możesz przesłać dowolny certyfikat CA X.509 w formacie PEM, który spełnia następujące wymagania:
bezpośrednio podpisuje certyfikaty klienta, których zamierzasz używać, albo stanowi kotwicę zaufania dla prawidłowego łańcucha certyfikatów przedstawianego przez klienta.
ma rozszerzenia Certificate Authority, Subject Key Identifier oraz Authority Key Identifier (w formacie KeyIdentifier)
ma uprawnienia Key Usage: „Certificate Sign, CRL Sign”
nie wygasa w ciągu 1 dnia
łączny rozmiar certyfikatu musi być mniejszy niż 16 KB.
Wymagania dotyczące certyfikatów klienta
Jeśli w Twojej organizacji włączono obsługę łańcucha certyfikatów, klient może przedstawić końcowy certyfikat klienta oraz certyfikaty pośrednie potrzebne do utworzenia prawidłowego łańcucha do aktywnego przesłanego certyfikatu. W przeciwnym razie certyfikaty klienta muszą być bezpośrednio podpisane przez certyfikaty przesłane wcześniej. Poza tym certyfikaty klienta muszą spełniać następujące wymagania:
ma rozszerzenia Subject Key Identifier i Authority Key Identifier (w formacie KeyIdentifier)
ma uprawnienia Key Usage: „Digital Signature, Key Encipherment”
ma uprawnienie Extended Key Usage: „TLS Web Client Authentication”
ma rozszerzenie Subject Alternate Name
Obsługa łańcucha certyfikatów dla mTLS API
Obsługa łańcucha certyfikatów pozwala klientowi przedstawić końcowy certyfikat klienta wraz z certyfikatami pośrednimi potrzebnymi do utworzenia prawidłowego łańcucha do aktywnego przesłanego certyfikatu.
Dzięki temu możesz rotować certyfikaty pośrednie bez przesyłania każdego nowego certyfikatu pośredniego, o ile aktywny przesłany certyfikat używany jako kotwica zaufania pozostaje ważny.
Obsługa łańcucha certyfikatów jest obecnie dostępna na żądanie. Aby poprosić o dostęp, skontaktuj się z opiekunem konta albo otwórz zgłoszenie do pomocy technicznej.
Twój klient musi przedstawić wszystkie wymagane certyfikaty pośrednie. OpenAI nie pobiera brakujących certyfikatów pośrednich przez AIA. Sprawdzanie CRL i OCSP pozostaje nieobsługiwane.
Często zadawane pytania
Czy mogę skonfigurować mTLS przez API?
Tak — więcej informacji znajdziesz w dokumentacji API pod adresem https://platform.openai.com/docs/api-reference/.
Które punkty końcowe obsługują mTLS?
W tym okresie beta mTLS jest oficjalnie obsługiwany w
/v1/chat/completions (with all supported extensions e.g. image, audio, streaming, etc.)/v1/completions/v1/embeddings/v1/audio/transcriptions/v1/audio/speech/v1/files/v1/batches/v1/responses/v1/images/v1/moderations/v1/realtime (via server-side web sockets)/v1/fine_tuning/v1/tunnels
Jak wysłać certyfikaty klienta z żądaniem?
W przypadku żądania cURL możesz użyć opcji --cert i --key (zobacz stronę podręcznika tutaj). Większość innych klientów HTTP również umożliwia przekazywanie certyfikatów klienta. Przykłady: requests w Pythonie, fetch w JS. W naszych oficjalnych pakietach SDK obsługujemy też zastępowanie klienta HTTP — przykład dla Pythona znajdziesz tutaj.
Gdy obsługa łańcucha certyfikatów jest włączona, skonfiguruj klienta HTTP tak, aby przedstawiał końcowy certyfikat klienta oraz wszystkie wymagane certyfikaty pośrednie. Dokładna konfiguracja zależy od używanego klienta HTTP.
Zanim wymusisz mTLS dla ruchu produkcyjnego, upewnij się, że używany klient HTTP poprawnie obsługuje żądania certyfikatu klienta (niektóre, np. WebSockets w określonych przeglądarkach, tego nie robią). Pamiętaj, że nasz serwer nie przekazuje listy certificate_authorities w żądaniu certyfikatu klienta.
Kto może uzyskiwać dostęp do certyfikatów i je modyfikować?
Za pośrednictwem interfejsu panelu https://platform.openai.com/settings/organization/mtls właściciele organizacji mogą uzyskiwać dostęp do certyfikatów i je modyfikować. Każda osoba z kluczem Admin API Key (https://platform.openai.com/settings/organization/admin-keys) również może uzyskiwać dostęp do certyfikatów i je modyfikować, ale pamiętaj — jeśli aktywujesz Mutual TLS na poziomie organizacji, wymusisz certyfikaty także dla tych żądań API. Wszystkie zmiany mTLS są widoczne w dziennikach audytu.
Ile certyfikatów mogę mieć?
Każda organizacja może przesłać maksymalnie 50 certyfikatów, które można udostępniać między projektami, ale nie innym organizacjom. Możesz atomowo aktywować/dezaktywować certyfikat dla 10 projektów naraz. Możesz też aktywować/dezaktywować 10 certyfikatów naraz dla swojej organizacji lub dla 1 konkretnego projektu.
Czy mogę aktualizować lub usuwać certyfikaty?
Możesz aktualizować nazwy swoich certyfikatów, ale nie ich treść. Możesz także usuwać certyfikaty, jeśli nie są obecnie aktywne w żadnym zakresie.
Jak działa unieważnianie certyfikatów?
Obecnie nie obsługujemy sprawdzania CRL ani OCSP. Zalecaną alternatywą jest usunięcie lub rotacja klucza API. Możesz też wymienić certyfikaty CA albo używać certyfikatów klienta o krótszych okresach ważności.
Czy mogę używać dłuższych łańcuchów certyfikatów?
Tak, jeśli obsługa łańcucha certyfikatów jest włączona w Twojej organizacji. Twój klient musi przedstawić końcowy certyfikat klienta oraz wszystkie wymagane certyfikaty pośrednie, aby OpenAI mogło zweryfikować łańcuch względem aktywnego przesłanego certyfikatu. Aby poprosić o dostęp, skontaktuj się z opiekunem konta albo otwórz zgłoszenie do pomocy technicznej.
Jaka jest zalecana konfiguracja?
Podczas początkowej konfiguracji tej funkcji zalecamy rozpoczęcie od projektu stagingowego, który nie obsługuje oficjalnego ruchu produkcyjnego. Wykorzystaj tę okazję, aby upewnić się, że certyfikaty są prawidłowo skonfigurowane na Twoich maszynach i że możesz skutecznie wysyłać ruch API. Poza tym zalecamy konsultację z zespołem ds. bezpieczeństwa w Twojej organizacji, aby jak najlepiej zrozumieć Twoje potrzeby.
Dodatkowe wsparcie
Możesz samodzielnie obsługiwać funkcję mTLS za pomocą panelu i API. Jeśli jednak chcesz najpierw włączyć mTLS w trybie shadow, skontaktuj się ze swoim opiekunem klienta lub otwórz zgłoszenie do pomocy technicznej, rozpoczynając nowy czat w prawym dolnym rogu tej strony.
Dodatek: terminologia
Certyfikat CA: jeden z Twoich zaufanych certyfikatów używanych do weryfikacji certyfikatów klienta. Może on bezpośrednio podpisywać certyfikaty klienta wysyłane z żądaniami albo stanowić kotwicę zaufania dla łańcucha certyfikatów przedstawianego przez klienta. Możesz używać samopodpisanych certyfikatów CA.
Przesłanie certyfikatu: dodanie certyfikatu CA do konta. Nie jest on jeszcze nigdzie egzekwowany dla mTLS, ale możesz zacząć go konfigurować.
Zakres: konkretny projekt albo cała organizacja.
Aktywowanie certyfikatu CA w zakresie: włącza mTLS konkretnie dla tego zakresu, a wszystkie żądania oparte na kluczu API muszą zawierać certyfikat klienta, który można zweryfikować względem aktywnego certyfikatu CA.
Dezaktywowanie certyfikatu CA w zakresie: wyłącza używanie tego certyfikatu do weryfikowania żądań w tym zakresie. Jeśli w danym zakresie nie pozostały żadne certyfikaty, mTLS jest faktycznie wyłączone.
Dziedziczenie certyfikatu: jeśli aktywujesz certyfikat dla organizacji, zostanie on aktywowany także dla wszystkich projektów.
