Руководство по ssl

��� ����������� �� ��������� ������������� ����� �������� � ������ ����, ��� ����������� TLS/SSL � X.509 (SSL), � ��� ����� ��������������� �����������. � � ������������ �������� ����, ��� ����� �������� ��������������� �������� ������ (Public Key Infrastructure, PKI).

��, ��� �� � ����������� �������� ������������� SSL, � ���������������� ������ ���������� ������������� X.509. ������ «���������� SSL» ������� ��������������� � ����� � ���������� Netscape ������� ����������� X.509 (������ �� ���������� ����� ��������� X.500 ITU) ��� ���������� ���� ��������� ������������ ������ ��������� SSL (Secure Socket Layer) � �� �������������� �������, ����� ��� ��� �ݣ �����, �� ������� ������� ���������, � �������� ��� ����������� ������. ������ «���������� SSL» ����������� �, ������ �����, ���������� � ��������� �������, ��������� ��� ������������ «���������� SSL» � «���������� X.509» ������ �� ���� ������������ �������. ����������, ��������-��������� ������ ������������ ��� ����������, �������� �� ��, ��� S ������ ���� ��������, ��� X. ��� ���, ������� ��������, ������� ������������ ������ ����� � ���, ��� ��� ������.

� ��������� ������ ����������� �������� SSL, TLS, ��������� ������ � X.509 � �� ����������, � ����� ���-����� ����������� � ����� ������������, � ��� ����� � ������������ EV, � � �������� �������. �������� ��������������� ������������ ������������ � ���� �������� ������� ������������� ������ OpenSSL.

�� ������ ���� ������ ���������� SSL (X.509), ���� ������������� ���� ����������� (���������������) ��� ������������ ���, � ����������� �� ����������, ���� ���������� � ���������������� �����. ������� �������: ��� ������������� ��������������� ������������ �� ���������� ��������� ���������� �����. ������ �������: ��� ������������� ��������������� ������������ ����� ����� ��� � (��������) ����� ��������� ������������� �� ������ �� ��������. ��, ������ ��� ����������� ��� ���� ���������� �� ��������� ��������� ���������� X.509 (SSL) ��� ���� �� ����� ������� ���������� EV SSL (X.509), ���, ��������, �������� �� �����, ��� ��� ������ � ��� ��� ��� ������. � ���� �� �������� � ������ ��� ������ ���� �������� �������� �� SSL, ������ ���������� � ������������ — ����� ����� ���� ������. ��� ����������� �� ����� ̣���� ������.

<������������� ��������> � �����ģ���� ���� ������ RFC ����������� ��������� �� ��������� ������, ������� �� ����������� �� ��� ����, ����� ��� RFC ���� ��������. �� �������� ������ ��� �����, ����� �����, ����� RFC ����������� � �����-�� �������� ������, ������ �������� ��ϣ ��������������, � ������������������ � ����������� ���� ������������ ��������� ������ ������� (����� �������). ������� �ӣ ��� ������ �� ���. � IETF � IANA ���� �������� ���-����� � ���������� ������������������� � ��������� ������������������� �������������. ��� �� �����, �� ������ ���������� ��������� ����� ������������� �������� ��� ������ ������� ������� (������� ��� ����� ������ �� �������…).

����������: ���� �� ������/�������������/���������� � ����� ����������� ������������� RFC, �� ��������� ���������� ���������� ��� ���. �������� ����������� RFC �������������� IETF, ��������� ������ (������� ��������� ������������) ����� ����� �� www.ietf.org/rfc/rfcXXXX.txt ��� �� www.rfc-editor.org/rfc/rfcXXXX.txt (��� XXXX — ��������� �� 4 ���� ����� RFC, ��� ������������� ����������� ����� ������). �������������� �� ��������� ������ RFC ��������� �� https://www.rfc-editor.org/info/rfcXXXX, ����� ���������� ��������� ���������� � ������ �� ��������� (�����������) � PDF (�������������) ������ ����������. RFC � ����� ����� ���������� �� http://datatracker.ietf.org/doc/rfcXXXX/, ����� �� ���������� ��������� ��������� ���������� �� RFC (� ��� ����� ��������� �� �������), � ����� ������ �� �������� � ��������� ��������, ����� ��� �����, PDF � HTML (��� ������ ����������, ����������� � ������). �������, ���������� �������� ������ �� RFC.</������������� ��������>

���������� �����������: � ������� �������� �������� ������ ��������� �� HTML-������ RFC �� ����� https://tools.ietf.org/html/.

����� �� �������, ����� ��� ������ ����� ������ ���� �����, �� ��������� ��� �������� � ��ģ� ������ ���������.

����������:

  • ����� ��������� TLS/SSL
  • ������������������ ������ ����������� ���������� TLS/SSL
  • TLS/SSL — ��������� ��������
  • ���������� — �����
  • ����� ����������� X.509
  • ���� � ������������ ������������ X.509
  • ������� ������������ X.509
  • ������������� ������������ X.509 (�� � ����� � ��� �����?)
  • ����������� X.509 � ������������, ��������������� ������ ���-��������
  • ���������, ��������� � ������������� (CMP, CMC/CMS, SCVP, OCSP, HTTP)
    1. �������� ������-��������� ������� ����������� (OCSP)
  • ������ ����������� X.509
    1. ��������� �� ����� ����������� subject � subjectAltName
  • ������ ������ ������������ X.509 (CRL)
  • ������� ������� — �������������� ������ � ����������� X.509
  • ����������� X.509 ����������� ��������� (EV)
  • ������ — �������� ��������������� ������������ (OpenSSL, ��������� �������)
  • ������ — �������� �����Σ���� ��, ������������� ������������ � �����-������������ (OpenSSL)
  • ������ — �������� ������������ � ����������� ������� ����� (OpenSSL)
  • ��������� �� �������� ������, ��������� � SSL
    1. ������ PEM
    2. �������� ����� (�����) � ������� BEGIN PEM-�����
    3. ����� ������ � �� ����������
    4. ������ ������������
    5. ������� OpenSSL ��� �����������, ���������� � ����������� � ������������� � �������
    6. ������� ������������ ���������� PKCS#X � RFC
    7. ������ � ������������� � �������� ���������
  • RFC �� ����

�������� TLS/SSL

�������� �������������� ������������ SSL (X.509) — ������������� ��������� � ���������� TLS/SSL. Secure Sockets Layer (SSL, ������� ����ݣ���� �������) — ��������, ���������� ������������� Netscape � 1992 ���� ��� ����������� ������ ����������� ����� web-�������� � ��������� �� ������ݣ���� �����. ��������� ��������� ���������, �������� ������ 3 ���������� 1995 ����� � ������������ � ��������� ������-��������� �����������. � ����� � �������� Netscape ������������ SSL � ���������� ����������� �� �����. ����� �������, ���� �������� �������� ������ ���������� ͣ������ �������, �, � ����� ������, � RFC 7568 SSL v3 ������� ����������. ������ ��� ���������� ͣ����� ��������, � ������ ������ ��� ������������ �� �����, ���� �� ���� ���������� �� ����� ���������� ���������, ������� � �������.

IETF ����������������� Transport Layer Security (TLS, ������������ ������������� ������) ������ 1, ������������� ������������ �� SSL, � RFC 2246, ������ 1.1 � RFC 4346, ������� ������ 1.2 � RFC 5246. ����� ����, � RFC 3546 ���������� ��������� ���������� ��� �������, ����� TLS ������������ � �������� � ������������ ���������� ������������, ����� ��� ������������ ����, � RFC 6066 ������̣� ��� ���������� TLS, ���ӣ���� � ������ ������������ ����������� ������� (��������������� � TLS 1.2), � RFC 6961 ������̣� ����� ���������� �������, ����� ������ ����������� � ������� ���������� � ��������� �����������. �, �������, � RFC 7925 ������������, ��� ���������� � TLS (� DTLS) ��� ��� ������������� � IoT (Internet of Things, ��������� ����� ��� ��������� �������, ��� ������������ �������� ��� ��).

��� �������������� ��������� ����ݣ����� ����������, � ����������� �� ����������, ����� ����������� ���������� � ��������� ����������� ��������� �� ������ SSLv3, TLSv1, TLSv1.1 ��� TLSv1.2. ��� ��� �������� � �������� SSL, ��� � ����������� ������� ��, ��� �������� SSL, ������ ����� �������� �������������� TLS — ��������, OpenSSL ������������ � SSL (������ 3) � TLS (������ 1, 1.1 � 1.2). ��������� SSL � TLS ���������� ���� �� ����� ���� � �������, ���������� �������� ��������� � ����� ����������.

����������: SSLv2 ��� ����Σ� RFC 6176, � ������� ���������� ��������� ������ ���� ��� �����������. �� �� ��������� ������ ������ �������� � SSLv3: �� ��� ����Σ� RFC 7568. ��� ������������� ����� ���������� SSL ��������� � ������ �� ������� �������� ��������������� ����� ������� (�� �� ��� ��� ������������ ����, ��� TLS), ������ ��������� ������� �������, ��� ���� �ģ� � TLS.

TLS/SSL �������� ������ TCP, �� ���� �� ������ ��� �������� ���������������� ����������, ������� ��� ��������, ����� ��� HTTP ��� IMAP (��� �������� �� ������� 1):

������� 1 — ������� TLS/SSL

�� ������ ����������� TLS/SSL �� ���������� ������-���� �������������� ������ ����� — ������ ����� ��� ������������� � ���������� ����� �������� ������, �������� HTTP, ������� ����������, ��� ���� �������� ����� ������������ ����ݣ���� ������� (HTTPS � ������ HTTP), � �������� ��� ��� ���� ������������� ����� ����� (��� ���� �� ���������). ����������� HTTPS ������ ��������� �� ��, ��� ���������� �������� HTTP ����� �������� ������ ���������� TLS/SSL, ������� � ���� ������� �������� ������ TCP. � ������ HTTPS ������������� ����� ����� — 443, � ������ IMAPS — 993, POP3S — 995 � ��� �����.

���������� �������� ������� ���������� ���������� � ��������� MAC (Message Authentication Code, ������������������ ��� ���������), ������������� ����, ������������ � ������������� ����������������� ���������. ��� ���, ��� � ���� �� ������, ������������� �������� ��� ����������� �� ���������, ���������� ������������. ���������, ��������� ����� ��������� ����� �������� ������������� � �����.

����������:

  1. ����������� ��������, Datagram Transport Layer Security (DTLS, ������������ ������������� ������ ��� ����������), ���������� ������ ������������ ��� ������������� UDP (RFC 6347, �����̣� � RFC 7507). ��������� ��� �������� ���������� TLS, � ���������� � ������ ����������� DTLS �� �����������.

  2. ������ TLS 1.2 Suite B (������̣���� � RFC 6460) ���������� ����� ������ (�������� ����), ����������� � NSA Suite B Cryptography, � ����� �������� ������ ��� ������������� TLS ��� ���������� � ��������� ������������ ������������ ���.

����� — ������������ ����������� ����������

��� ������������ ����������� ���������� � ������� TLS/SSL, �������� ��� ������������� HTTPS (���� �� ��������� — 443), ����� ��������, ������� ������ �������� ����������� ����������, � �������� ���������� ����� �����������. ������ ����� ��������� ���������� ���������� ����������� (Handshake Protocol), ����� ������ ����� ����������� � ������ � ������ ������ � �������� ������ (��� ������) (Record (Data) Protocol). ��� ������ ����������� �� ����� ��������� ����������� ����������� ��������� ����:

  1. ���������������, ����� ������� ��������� �� ��������������� (� ����������� �� ����������) ������, — SSLv3, TLSv1, TLSv1.1, TLSv1.2, — ����� ��������������. ������ ���������� ����� ��������� �� ��������� ���������, �� ���� � TLSv1 ������ ����� ��������� ����� SSLv3 � ������, ���� � ������ � ������ ������������ ��� ��������. ������ ���������� ������ ���������, � ������ �������� �� ������������� ������.

  2. ������������ ������������������ ������. ������ ������ �������� ������������������ ���������� � ����� ����������� (���������� � ����������) X.509 (SSL), �� �������� ������������ � ������ ������.

  3. ��������������� ������������� (ID) ������, ����� �������, ��� ������������� ������ ����� ���� ������������.

  4. ���������� ���������� � ������ ������, ��������� �� ��������� ������ ������� ������ � ����� ��������� ���������� ��ߣ���� ������ � ����� MAC, ������� ����� �������������� � ����������� ������ ������ ������� (�������� ������). ������ � �������� ��������� ������ ������� ������������ ������������� �������� (� �������� � �������� ������), ����� ��� RSA, DSA ��� ECC (Elliptic Curve Cipher, ���� �� ������ ������������� ������, �������� RFC 5289). ������������� ��������� ���������� ����� ����� �������� ���������� � ������ ��� ������������ ���������� �������� ������ (�������� ������) ������������ ������������ �����. ��������� ������ ������� ����������� ��� �������� ����������, �� ��������� ������� ����� ���� ���������� ��������� ��������� ����� ��� ������������� �����. MAC ������������ ��� ������ ����������� ������������/���������� ������ �� ����� ��������� ������.

�������, ��� ����ݣ���� �����, � �� ����� ������������ ���������� ����� ����������� ����� � ������� �������, ��������, � �������� ��� ���������� �������� �������������� � ������� ��� ��� �������������� ����� ���� �������� ���������� X.509 (SSL), �� ��������� ���� ������� — ��� �������� ���������������� ������, ��� �� � ����������������� �� ������� 2:

��������� TLS/SSL

������� 2 — ������������������ ������ ����������� ���������� TLS/SSL

����������:

  1. � ���� ��������� ����������� ���������� ���������� � ��������������� ����������, � � ���� ��������� ������ ���������� �������� (������������) �������������� ������ ������, ����� ��� HTTP, SMTP ��� IMAP.

  2. �� ������� 2 ޣ����� ��������� �������� ���������, ������������ �������� ������� (���������������); ������ — ���������, ������������ � �������������� ��������� �����, ���������������� �������� (� ������� ����� ������ �������), ��� �� ��������� ���������, ����� � ������� ��� ������ � ���������������� ��������� �����; ��̣���� — ���������, ������������ � �������������� ���� ��������� ���������� ��ߣ���� ������ � ���� MAC, � ������� ������� ������������ � �������� �����������.

  3. TLS/SSL ��������� ������������ �� ������������� ������-���� ��������� ������ ������ (��� ��������� ����� ������ ������). � �ޣ��� �������� ����������� ����� ������ ������ ������������ �ӣ ���� ��� ������ �� ������������, � ������ �������� ���������� ��������� ������ � ������������� ������ ������ ��������������� � NULL (�� ������������).

TLS/SSL — ��������� ��������

� ������ ������� ���������� ����� ��������� �������� ������ ����������� ���������� TLS/SSL (�������� ������� 2 ����) ��� ���, ��� ����� ���������� �� �������������. ���� ��� ������� �������� � ���, ��� «� ���� ���������� ����� ����������», ����� ���������� ���� ������, ����� �� ��������� ���������.

  1. ClientHello (1): ��������� ClientHello ���������� ������ �������������� ������/��������� ����������, �������������� ������ ������ � ������� ������������ � ������ ���������� ������ (������ NULL). ������ ����� �������� ��������� �������� �������� � 32 ����� (������� �������� �������), ������� ������� ����� �������������� ��� ���������� ������������� �����, � ������������� ������, ������� ����� ����� ����, ���� �� ���� ���������� ������, ���� ���������� ��������, ���� ������ �������, ��� ���������� ������ ����������.

    • ������ ����� ������ ������� �� ��������� ������ �������, ��������� ���������� ��ߣ���� ������ � ��������� MAC (�����������).

    • ����� ������, ������������ � �������� � ��������, ��� �������������� ���������� �����:

      TLS_NULL_WITH_NULL_NULL (0x00, 0x00)
      # ������ NULL — �������� ������ �������
      # ��������� �� ��� WITH_NULL ���������� �������� ���������� ��ߣ���� ������
      # ��������� NULL ���������� MAC
      

      ��� �������� ������� � ���, ��� ���������� ����������� �� ����� � ������ ��� ��������� �� Client Key Exchange (ClientKeyMessage) ����� ������������ �������� �������.

    • �������� ����� ������:

      TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x00, 0x0A)
      # RSA — �������� ������ �������
      # WITH_3DES_EDE_CBC ���������� �������� ���������� ��ߣ���� ������
      # (Triple DES � ����������� �������� ������)
      # SHA — ��� MAC (���)
      

      ����������:

      1. ������� ������ ������ �������� ���� ���. �������� ����� ���� (��� ������) ���������� ���������� ��������� ������ ������ (Signaling Cipher Suite Value, SCSV) — �ݣ ���� ����� ��� ������ ���-���������.

      2. ���������� �������� ������� ������ ����� ����� � ����������� C RFC �� TLS (RFC 2246 ��� TLS 1, RFC 4346 ��� TLS 1.1 � RFC 5246 ��� TLS 1.2). �������� ��� ECC (������ �� ������ ������������� ������) ��������� � RFC 4492 � RFC 7027.

      3. ����� EXPORT, ������������� � ��������� ��������� ������� ������, ������� � ���, ��� ��� ����� �������� ���������������, �� ���� ��������� ����� ��������� ������������ ������ � ������̣���� ������� (�������� ������������ ���� �������������� � ������������ (BIS) ������������ �������� ��� � ������������ ����������), � ��� ���������� ��������� ��� ��������� �������, ������� ����� �������������� �� ������������� ������.

      4. ����������, ������̣���� � RFC 3546 � � �������� ������������ � ������������ �����, ����� ���� ��������� � ��������� ClientHello �� ����� ����������� �������� �������������. RFC 6066 ����������� ����������� ���������� ���������� TLS, ������ �� ������� ����� �������������� � ������� (�� ������������) �����. ������ ����� ����� ��������������� �� ����������, ������� �� �� ��������.

      5. � RFC 6066 ����������� ��� ���������� TLS Certificate Status (status_request), � �������, �� ��������, �������: «� (������) ��������� �� ������� ������ (�������) �����������, �� � ���� ��������� �������� ������ (�������) ������ �� ��� ������ (Certificate Status) � ���������� �����������(!)». ����� �� ������ Certificate Status (������ ���������� � ������� OCSP) ���������� � ��������� CertificateStatus ����� ����� ��������� Certificate (�������� ����). ������, ������� Certificate Status (status-request) ����� ��������� ��������� (����� ������������ ���������?), ��� ���� ���� ������� OCSP-��������. � RFC 6961 ������������ ���������� «certificate_request_v2», ��������� ��ߣ�� ������� �� ������� TLS ������� OCSP ��ԣ� ���������� ������� �� ��� ���������� ������ OCSP, � ����� �� ������� TLS ������� TLS ��ԣ� ���������� ������� �� ��� ���������� ��� ����������� ����������, � ��� ����� � ������������� ������������, � ����� ��������� CertificateStatus.

    • � RFC 6066 ���������� ������������ ���������� Server Name Indication (SNI), ����������� ������� ��� ��������� ��������������� ���������� TLS/SSL �������� ��� �������, ����� ��� www.example.com. ������ ����������� (�������������� ������������ ����������� ���������) ��������� web-�������, �������������� ��������� web-������, (��������, Apache � ����������� �������� VirtualHost) ���������� ����������� ��� ����� ���������� � ��ϣ� ��������� Certificate (3). ������������ Apache 2 ��� ��������� SNI.

    • � RFC 7250 ���������� ���������� client_certificate_format, ������� ����� ����������� ��� �������� ������� ������������� �����������. ��� ����� ���� ���������� ������ X.509 ��� ������ RawPublicKey, ��� ������� � ����������� ���������� �������� ����������� ��������� ����������� ���������� ����������� �� ������ �������� subjectPublicKeyInfo.

    • ������ TLS/SSL-������� ��� ������������� ������� ������ ����� �������� ���������� ����� �� ����� ������ ������ ���������, ��� ����� �������� � ��������������� ���������� ����������. � RFC 7507 ������̣� ����� ����:

      TLS_FALLBACK_SCSV  {0x56, 0x00}
      

      TLS/SSL-������� ����� �������� ��� ��������� � ����� ������� ����������� � ��������� ������ ���������. ������ ������� ������������� ����� ���������, � ����� ���������� �������� ��������������� ���������� � ����� ������ ������� ���������. ����� �������, ������������ ��� ���������, ����� ��������� ���������� � �������� � �������� �������������� inappropriate_fallback (86), ���� ������������ �������� ������ ��������� ����, ��� ��, ��� �������������� ��������. ����� ������� �������������� ������, ����� �������� ������������ ���������� � �������������� ��������� ������ ���������.

    • � RFC 7685 ���������� ����������, ������� ����� ���� ������������ ��� ���������� (������) ������� ��������� ClientHello � ����� ��������� ������� �� ������ ��������� ���������� TLS (������ �� �� �ݣ �� ���������).

    • � RFC 7633 ���������� ����� ���������� ����������� X.509, ������� �������� � ���� ������ ���������� TLS, �������������� ���� ������������. ���� ������ �� ������������� ��������� ���������� TLS, ������ ����� ������� ������������� � ������������� �������������� ������ � �������� ţ. ��������, ��� ����� ������� ������ ������ ������� �� ������� ��������� ���� Certificate ����������� TLS.

  2. ServerHello (2): ��������� ServerHello ���������� ��������� �������/����� ������ ���������, ����� ������ � �������� ������. ������ �������� ��������� �������� �������� � 32 ����� (������� �������� �������), ������� ������� ����� �������������� ��� ���������� ������������ ������. ���� ������������� ������ � ��������� ClientHello ��� ����� ����, ������ ������� � ���Σ� ������������� ������. ���� � ��������� ClientHello ��� ��������� ������������� ���������� ������, ��������� ������� �������, �� �������� ����������� ����� �����ģ� �� ����ݣ���� �����. ���� ������ ��������� ����������� ������� ������������� ������, ������ ���������� ����� ������������� ������ � �������� ����������� ���������� �� ������ �����.

    � RFC 7250 ���������� ���������� server_certificate_format, ������� ����� ����������� ��� �������� ������� ������������� �����������. ��� ����� ���� ���������� ������ X.509 ��� ������ RawPublicKey, ��� ������� � ����������� ���������� �������� ����������� ��������� ����������� ���������� ����������� �� ������ �������� subjectPublicKeyInfo.

  3. Certificate (3): ������ �������� ���� ���������� X.509, ���������� �������� ���� �������, �������� �������� ������ ��������� � ���������� ������ ������� � ��������� ������ ������. �������� ���������� � ������ ������ �������� ��������� �����, — �����, ��������, ������ ������� �� ������ DNS KEY/TLSA RR, — �� ���������� X.509 �������� ����������� ������������ �������. ���� ������� ��������� — ��������� �������� �� ����������� ��������� ��������� ����� �������, ������� ����� ����� �������������� ���� �������� ��� �������� �������������� ���������.

    ����������:

    1. ���� � ���� ��������� ������ ���������� ������ ���� ����������, ����� ������� � ��� ���������� ������ ������������ (certificate bundle) — ����� ������ ����������� � PEM-�����. ��������, ������ ������������ ����� ���� ���������� � ������� ��������� Apache SSLCertificateChainFile, ����� ��� ��������� ���������� ������ ���� ������̣� ���������� SSLCertificateFile. ������ ������ ������������ ��� ������� �����-������������, ������������ � ���������� ��������� ����� ���������������� �����������, ��������, ��� ������������� ���������� ����� �������� ������ ��� ��������� �����/������� ����� ��������������� ������ (CA).

    2. �������� DNSSEC DANE (RFC 6698) ��������� �������� �������� ����� ����������� X.509 ������� � ������� ������� � ������� DNS. ������, �����������, ���������� �� ������� DNS � ������� DANE, �������� ��������������� �� ��������� � ���, ������� �������� � �������� ����������� ������ ������������� TLS/SSL, � ������ ������ ��� ����, ����� �������������� ��������� ����� �������� �������������� �����������, � ������ � ����� ��������� ������������ �������� ������� (���� ������ ��������).

    3. RFC 7250 ���������� ����ݣ���� ������ �����������, � ������� �������� ���� � ������ ���� ��������������� � �£����, ��������� �� �������� SubjectPublicKeyInfo (������������ ��� �������� ������� ��������� �����). ��� �������� ��� � ������� ����� ��������� ������� ��������� ��������� ����� ��������������� �� �������������������� ���������, ������ ��� ����ݣ���� DNS-������ DNSSEC.

  4. ServerDone (4): ��� ��������� ��������� �� ��������� ��������� ����� ������ ������������������ ������� � ��������� ������� ���������� ������������������ ���������. ����������: � ���� ����� ������ ����� ��������� ���������� ���������� ��� ���������� �������� ��������������. ������������������ ������ ���������� ������������ ���� ������� �� �������� ������������������ ���������, ��������� ������ ��� �� ������������ � ţ ��������� ��������� �� ������ ��������.

  5. ����������: ���� �� ����� ����������� �� ������������ TLS/SSL ������ �������� ���������� �������, �� ������ ������ ��������� ���� ���������� (� ��� �� �������, ������� ��������� ��� �������, � ��� �����������, ��� RFC 6066 ��������� ������ ������� �������� URL ����������� ������ ������� �����������) ��������������� �� ���������� ServerDone � �� ��������� ClientKeyExchange.

  6. ClientKeyExchange (5): ������ ��������� ��� ���������� ���� pre-master key, ��������� ��������� ����� (��� ������� �������� �������) ������� � �������. �� ������� ���� ���� � ������� ��������� ����� �������, ����������� �� ���������������� ����������� X.509. ������ ������ ����� ������������ ������ ��������� ����� �������� ������. ��� ������� ���������� ���� �� ����� ��������� ����� ��������� ���� master key �� ����� pre-master, ��������� ������̣���� � ��������� ��������. ����� ��������� �����, ������� ����� �������������, ����� ������������ �� ����� ����� master key.

    ����������:

    1. ��� ��������, TLS (� DTLS) ����� ���� ������� � ������ ���� «������� ����������» (Man-in-The-Middle, MTM). ��� ���������� ���� ���������� � RFC 7627 ��� ����������̣� ����� ���������� ����� master secret (���������� ������̣���� � RFC 5246). � ����� ������ ������ ��������� ����� ������� � ������� ������������ ��� ������ ������ �� ��������� ClientHello �� ��������� ClientKeyExchange. ������ �������������, ��� �� �������� ������������ ����� (����������̣����) �������� ���������� master secret, ��ԣ� �������� � ClientHello ������� ���������� extended_master_secret. ���� ������ ������������ ����� ��������, �� ����� �������� ������ ���������� extended_master_secret � ��������� ServerHello. ���� ������ ��� ������ �� ������������ ����� �������� (RFC 7627), ���, ������� ��, ����� �������� ������, ���� ���������� ţ � �������������� ������� ��������� (RFC 5246).

  7. ChangeCipherSpec — ������ (6): ��� ��������� ���������, ��� ���� ����������� ������, ��������� �� ������� �������, ����� ���������� � ������� ���������� (� ���������� �����������) ��������� ���������� ��ߣ���� ������ � ����� ��������� MAC, �������������� �� ���������� ���������. ���������� ��� ��������� ������ ����� ����������� ������� ������, ������� � ������ ������������ ���������� ����� NULL, �, �������������, ������ ��������� ���������� �� ��������� ��� ������������ � �������� ����. �������� �� ��, ��� ��� ��������� �������� �� ��������� ��������� ��� ������������ ��������, ����� ��� ������������ � ���������� Client Key Exchange.

  8. Finished — ������ (7): ��� ��������� �������� ��� ���������, ������������ � ���������� �� ����� ��������� �����������, �� ����������� ��������� Finished. ��� ��������� � ������� ��������� ���������� �������� ������ � ���������� � ������� ��������� MAC, � ������� ������������ �������. ���� ������ ����� ������������ � �������������� ��� ��������� (���������� ��� ���������� ���������), ��������� ���������� ����������� �� ��������� ����, ������ ������ ��� ��������. ���� �� ���, �� ���� ����� ������ ��������� ������ � ���������� ��������� Alert � ��������� (��������, ������������) ����������� �� ������.

    ����������: � RFC 7918 �������, ��� ��� ������̣���� �������� ������ ����� ������ �������� ������ ����� �� ����� �������� ������� ��������� ��� ���������� ������� �������� ����������. ���� ��� ��������� ����������� ��������� �� ������� �������ģ� ������, �� ���������� ����� ���������, �� ������ ����������������� �� �����.

  9. ChangeCipherSpec — ������ (8): ��� ��������� ���������, ��� ���� ����������� ������, ��������� �� ������� �������, ����� ���������� � ������� ���������� (� ���������� �����������) ��������� ���������� ��ߣ���� ������ � ����� ��������� MAC, �������������� �� ���������� ���������. ���������� ��� ��������� ������ ����� ����������� ������� ������, ������� � ������ ������������ ���������� ����� NULL, �, �������������, ������ ��������� ���������� �� ��������� ��� ������������ � �������� ����. ��������� ������� ��������� ������ ������� ������� � ���, ��� ������ ������� � ���� ���������� ��������� Finished ����� �������.

  10. Finished — ������ (9): ��� ��������� �������� ��� ���������, ������������ � ���������� �� ����� ��������� �����������, �� ����������� ��������� Finished. ��� ��������� � ������� ��������� ���������� �������� ������ � �������� MAC, � ������� ������������ �������. ���� ������ ����� ������������ ��� ���������, ��������� ���������� ����������� �� ��������� ����, ������ ������ ��� ��������. ���� �� ���, ������ ��������� ���������� � ������ ��������� Alert � ���������� (���� � �� ������ ����������) ��� ������.

  11. Record Protocol (�������� ������): ����������� ��������� ����� �������� � �������� ��������� � ������� ��������� ���������� �������� ������ � �������� MAC, � ������� ������������ �������.

����������:

  1. ��������� ��������, ���������� �������� � ��������, � ����������� ��������� ���� pre-master �������� � ���� �������� ������� ��������� ��� ����� (��� �������������� ���� ����������) � ������, ��� � �� ���� ����������������� ��������, � ������ � ������ ������ ������������ ������������������ �������� �������, ����� ��� NTP.

  2. ��� ���������� ���������� �������� ��� �������� � ������� ��������� Alert ����������� ��� ������ ����� ���� �������� (�, ��������, �����������), ����� �� ������������� ������ ������� �������������� ����������, ������� ����� ���� �� ������������ � ����������� ������.

������

����� ������������ X.509 (SSL)

������������ �������� ITU-T X.509, � ������� ����������� �������� ��ϣ ������������ ���, — ���� �� ����� ���������� ������������ ��������� X.500. ������������� ������������ X.509 � �������� ����������������� IETF � RFC 5280, ������������ ������ ����������� X.509, � ����� � RFC 4210, ������������ �������� ���������� ������������� (Certificate Management Protocol, CMP), ������� ������������ ��� �������� �� ������ � ��������� ������������ X.509 (���� ����� ��� �������������� ����������, ������������ ��� ��������� � �������� ������������). �������, � RFC 3739 ������������ ��, ��� ���������� ����������������� ������������ (Qualified Certificate), ����������� � ����������� ��������� �� ����������� �������� (��������� 1999/93/EC).

��� ��������������: ��������� �������� X.500 ITU-T ����������, ������ �������, �������� DAP (Directory Access Protocol), ������� �������������� ��� ��������� ������������ ��������� OSI-������� X.400. � IETF ������ �������� ������ ��������� ��� ���� ���� OSI-��������� � ������� �������� LDAP (Lighweight Directory Access Protocol). ��� ��� ��� ����������� � ������������ X.509 ����������� ����������� ��ң� ��ϣ ������ �� DAP/LDAP.

X.509 ��������� ���������� ����� � ������������ ��� ������������. � ���������, ��� ����������� ����� � ����������� � Σ� ������������ ������ «������������� ���» (Distinguished Name, DN). DN ���������� IETF � ����� RFC �� LDAP, ����������, � RFC 4514 (���.). ����� ������������ ������� «����������� ������� ���������� 1» (Abstract Syntax Notation 1, ASN.1) � «������������� �������» (Object Identifier, OID), ��������� � ����� ���������� X.680 ITU. �������, ��� ����������� ������������ «������ (��� ����������) ������� �����������» (Distinguished Encoding Rules, DER), ��������� � X.690 ITU.

����� ���������� ������� ���������� ��������� � ����������� ������������� ����������, ���������� ��� PKCS#X (��� X — �����), ��������, PKCS#10 ���������� ������ ������� �� ������� ����������� (Certificate Signing Request, CSR). ��� ��������� � ����������, ������������ RSA Laboratories. ��������� �� ���� ���������� ���� �������������� ����������� ��� ��������� � �������� RFC, ��������, ���������� ���� PKCS#10 ��� ����������� ��� RFC 2986 (�����̣� � RFC 5967). � ���������� � ���������� �� IETF, RSA � ITU-T, X.509 ��� ���������������� � ���� �����, � ����� ���������� ������������� �������������. ��, ��� ������ �� ���� ��������, � ����� ��, ��� ���������� �����������, �������� �������� �� ��, ��� �������� ��������������� ���������� ����� �������� � ��������� ��������� � ���������� � �������������. ��� �������� ���������, ������� � �������� ����� ������� �� ���������� X.509 �� Peter Gutmann.

���������� X.509 ��������� ��� ��������� �������:

  1. ���������� X.509 (� ��������� ����� X.509v3) ������ ����������� ��� ��������� �����, ������� ����� ���� ����������� ��� �������� ��� ��������� ��������� �������� (end entity, EE), ������ ��� ���-���� ��� LDAP-������. ���� ������� ������̣� � ���� subject �����������. ������� � ���� subject ����������� � ����� ����������� ��� �������������� ����� (Distinguished Name, DN), — ������ ������������ � LDAP, —  ���������� �� ���� ������������� ���������� �ͣ� (Relative Distinguished Name, RDN), ������ �� ������� ������������ ����� ���������� ������ �������, ���������� ��������� (Attribute). � ���������, ������� CN (commonName), ���������� RDN ����������� �����, ������ �������� �������� ��������� ��������, �������� ����� ����������. �������� CN ����� ���� ����� ���-�����, ����� ��� CN=www.example.com. ������ DN � ���� subject ����� ��������� ���� ��� ����� �� ��������� RDN: CN= (commonName, ������������ ���, ������������ ��������� ��������, ��������, website ��� www.example.com), C= (������), ST= (���� ��� ������� � ������� ������), L= (��������������, ���������� ���������� �����, �� ������������ � ������ �����, �� ����������� ������������ EV, ��� ��� �������������� ������ ����������), OU= (organizationalUnitName, �������� ������������� �������� ��� �����-���� ���� ������������), O= (organizationName, ������ �������� ��������).

  2. ���������� X.509 �������� �������� �������� ���������� �������������� ����������� (������ ���������� �������������� ������� (Certificate Authority) ��� ������ CA), ���������� ��� (DN) ������� ������� � ���� issuer �����������. ��� ��������, ��-������, ��� ����, ����� ���������, ��� ������ ���������� �� ��� ��������, � ��-������, ��� ����, ����� ����������� (������������), ��� ������ �������� ���� ��� ��������, ���������� � ���� subject �� ����� ���� �������� �������� ������ ��� ������� ��������. ���� ������� ������� �� ������ �����. ������������� ����������� ����� ���� �������������� ������� (Certification Authority, CA), ��������������� ������� (Registration Authority, RA) ��� �����-�� ������ ������������� ������� (����� ��� �����Σ���� �������������� ����� (subordinate CA)), ����� ���� ���������� ����� ���� ���������������. ����������: �������� ����, ��������������� � �������� ���ޣ� � ����������� X.509 ������������, ������ �������� � ������������ � ������� �� ������������ ������������� �����������.

��������� ��������� X.509, ���������� ������� �������������� (��� ����������) ������������ (Certificate Revocation List, CRL, � ��������� ������ CRLv2) ������������� ���������� � ������������, ������� �� ��� ��� ���� �������� ���� ������������ ��� �������� �����������������. �� ����, CRL ������������ ����� ����������� «��������» ������ ������ � ��������������� �������������. � ��� ���������� ������� (����� ���� ����� �������) ������ ���� ������������, ������� ���� ��������. ���� ������������ (�� ��������� ������) ����������� ��� � ������ CRL, ��������������, ��� �� �ݣ ������������. � ������� CRL ���� ��������� �������: ��� ����� ����������� ������ ������������ � ������ �� (��������� ������������), ��-�� �������� ������� CRL �������� ��������� �� (���� ������ ��� ������) �������� � �����������. ������ ������, ��� �� ����� ������� � ����������� ������. ��� �������� �������� ������� ����������� ����������� (����� ��, ������������� �� ��������� ������) �ӣ ���� � ���� ������������ ������-������ (OCSP), � ������������ SSL-������������ EV, ������ ������� ������������� ������������� OCSP.

������� ����� ���������� � ���� ������� ������������� �� ������������� X.509 ��� ��������� ������������ �������. X.509 ����� ����� �������������� � ��� ������ �����, ����� ��� ������������� ������������� (������� �������� �������) � S/MIME, ������� �� ����������� ����������, ����� (����) ������ ������ ����������.

������

���� ������������ X.509 � ������������

��� ���������� ��������, ��������� � ������������� X.509 (SSL), ������������ ��������� ���������� ��������. ������ ��� ����������� ���������������, �� � �������� — ���, ��� ������ ��������� �����������. ���� � RFC, �����ݣ���� ������������, ��� ������ ����������� ������������, �������, ����� ����� � ���� ������� ���� � RFC 4210. ��� �������, �������������� ������ (��) ���������� ��������� ����� ������������. �� ����������� ������������ EV � ����������������� ������������, ������� ������ ���������� � �����������, ��� ��� ���� ������������, �� �������� �ޣ��, — ������������� ���������, ���� ������� — ������������ ����� �� ����/����������������. ������� �� ����������� ���� ������������� ������� �������� ����� ������������, � ������ ������ ������������ ������� ����������� ������������. �������, �� ��� �� ���������. ���� ����������� �� �������� �������� ����������������� �������������, ������� ��������� ����������� ��� ��������������� ���� ��� ����� ������������� �������������, ��� �� ������ ��� (�� ����� �� ����� ������ �� ����������, ������������ � ������ � ��������, ��� ���). ��� ������� ����������� ���������� ��������� ������������!

����� ����������� ������� ���������� �������� ����� ������������ ������� �� �������������� ������� � ����� ������������ � ����� ����, ��� ���� ������� � ���������� ���������. ������������ ��������� ����� �� ����������� ������������ (� �������� �� RFC, �������� RFC 4210), � ����� � ���-������ �������������� �������.

�������������� ����� (��, �� �� �������� ��, ����. Certificate Authority (CA) a.k.a. root CA): ������ «�������������� �����» ������������ ��� �������, ������������� �����������, � ������� ��������� ��������� �������: ���� issuersubject ���������, ���� KeyUsage ����������� � keyCertSign �/��� � ���� basicConstraints ������� cA ���������� � TRUE. ��� �������, � ������� ������������ ���������� ��������� �� �������� ������������ ������ �������� ������, ������ RFC 4210 ����������, ��� �������� �� ����� ���� ����� �������� (issuer), ���������� �������� ������� �������� ��������� (��������, ���������) � ���������� ����������� �������� ���������. ��������� ������������� ������� � ������ ������ ����������� �������� �� ���� ��, ������� � ������� ������ �������������� ����������� ����� ���� �������� ������ ���������.

��������������� ����� (��, �� �� ��������������� ��, ����. Registration Authority (RA) a.k.a. Registration CA): ��������������� ����� (RA) ����� ������������� � ������������ �������� ��� ��������� ������������� ������������� �����������, ��������, �� ����� ���� ����������� ������������ �������������� ������� ��� ������������� �� ������������ ������������, � ������ �� ����� ������������������ �� ������������ ��������. ��, ���� ������� ������ �������, ��������, �� ����, ����� ��������� ��� ����������������� ��������. �� ����� ����������� ����������� (��� �������� ��), �� ����� �����, �������� ��������������� �������� ��������� ��������, ���������� ������ �� ���������� ��������� ��.

�����Σ���� ����� (�����Σ���� ��, ����. Subordinate Authority a.k.a. Subordinate CA): ����� ������. ����� �������, ������������� �����������, �� �� ���������� �������� ��. ��������� �����Σ���� �� — �������� ��, ������� �������� ��� ������ ��������� ��������� ��������� �� — ����� ���� �������� ��� �� (����� �������������� ���������� BasicContraintscA ����� ����������� � True). �� ����, ���� �� ����������� �����������, �� �� ������ ��� ��� �����Σ���� ��, � ���� �� �������� ��� ��������� ��������� ��, �� �� ����� ����� ���� �������, ��� ��.

������������� ����� (������������� ��, ����. Intermediate Authority a.k.a. Intermediate CA): �������� ������, ������ ������������ ��� ����������� ��������, ���������� ������������� �����������, �, ����� �������, ���������� �� � ��������� ��.

�����-����������� (��� �� ����������� ��������� ��� �������� �����������, ����. Cross certificates a.k.a. Chain or Bridge certificate): �����-���������� ������������ ����� ����������, � ������� �������� � ����� subjectissuer �� ���������, �� ��� �������� ��������������� �������� (������������ ���������� BasicConstraints � ���� cA ����������� � True). ��� �������, ����� ����������� ������������, ����� �� ������� ��������� �������� ���� �������� ������� ������������� (����� ���� ��������� ����� �������� ����� ��� ����� ����), ���� ����� ���� �� ��� �����ݣ� ������, � �����������, �������� �����ݣ���� ��, ������������� � ������ ���������, ����� ����� ���� ���������� �� ������������� ����� �������� �������� ������������. ��� ������������� � ������ ��������� ������ ���������� ��������� ��������� �� ��, ��� ���� ������� ����� ��������, � ������ ���������� �������� ������������ (�� ������������� � ������ �� ��� ��������� ������� ����� � ����). �����-����������� ����� ���� ����������� �� ������� (��� ����� ������ ������������ — �������� ���������� � ������� �������� TLS, ��������� Certificate), �� ��� ������������� ��� ����������� �������� �������������, ��������, ��� ��������� EV-����������� ������������� � EV ��������, �����-���������� ��������������� �� �������. �� ����������� ����, ��� ���� cA ����������� � True (���, ���������� ������, ���� ��� ������) �����-���������� ������������ ����� ������������ ������������� ����������.

������������� ����������� (��� �� ����������� ���������, ����. Intermediate certificates a.k.a. Chain certificates): �������� ������, ����������� � ������ �����������, �� ������������ �������� ��. ������������� ����������� ��������� �������, � ������� �� ���� �� ����������� ��������� �������� �� ��������� ����������� ����� ���� ������� ������ ������������� ������������. ������������� ����������� ����� ���� �������� ���������� ��, �� ��� ���� �������� �������� �� (���� ���������� �� ������� �������� �����-�������������) ��� ��������� �����: ����������� ��������, ���������� ��� ���� ������ ��� �������������� �������. � ������ ��������� ������ ��������� ������������ (���� ������ ���� � ��������), �� ������ ��������� �� ��, ��� ���������� �������� ������ �����-�� �������.

������ ������������ (����. Certificate Bundle): ����� ������, ����������� �� ��, ��� � ���� ���� (������ � ������� PEM) ���������� ��������� ������������ X.509. ������ ������������ ����� ������������ �� ����� ��������� ����������� TLS/SSL. ������ ������ ������������ ������������ ��� ���������������� ����� �� ����� ��������� ��������� ��������� ��, ��������, ����������, ��������� ��������, �����, ���� ��������� ����� �������� ����� � �.�.

����������������� ����������� (����. Qualified certificates): ������̣���� � RFC 3739 ������ «����������������� �����������» ��������� � ������������ ������������ (� �� � ������������ �������� ��� ������������ ��������� ��������) � ��������� �� ��������� ������������ ����� �� ����������� ������� (1999/93/EC), ��������������� �� ������������� ����������� ����������� � ����� ����������� �������, ����������� ��� ��������������. � ���������, ������ RFC ��������� ��������� � ���� subject � ������� ���ң������ �������� commonName (CN=), givenName (GN=) ��� pseudonym=, ����� ����� �������������� ���� subjectDirectoryAttributes, ���������� �����-���� �� ��������� dateOfBirth=, placeOfBirth=, gender=, countryOfCitizenship= � countryOfResidence=. �������, � ���� RFC ���������� ��� ����� ���������� biometricInfo � Qualified Certificate statements (qcStatements). ����������������� ���������� ������������ �� ������� ���������� qcStatements �� ��������� qcStatement-2. ����������� ������������ ���������� ����� �������� ��� ��������� � ����� ����������� ��� �������������� �����. � ��������� ������� �� �� ���� �������� �������, � ������ — ������ ������� ������������������ ���� ������� � ������� ����������� ����� ���, ��� ���������� ����������� ���������� ������������.

������������������� ����������� (����. non-Qualified certificates): ������, ��� �������� ������������ �����������, �� ��������������� ����������� ��������� ����������������� ������������. �������� ����������������� ������������ ����� ����������� ���� ������ �� ��������� � ������ ������������ � ��ͣ��� �� ��, ��� ��� ����������� ����� ������� ��������.

���������� ��������� ��������, �� �� �������� ���������� (����. End-Entity Certificate a.k.a Leaf Certificate): ��� �ӣ ��������. ������ «�������� �������» (� ���������� �������� ����� �������������� ��� end-entity, ��� � end entity) ���������� ������������ � X.509, � ����� � RFC 4949 � RFC 5280. �� ���� ������� ����� � ���, ��� ���������� ��������� �������� — ��� ����������, � ������� ��� ������ ��������� ��������, ���������� � �������� CN= ����� subject ��� subjectAltName, ������������ �������� ���� (��������������� ��������� �����, ���������� � ����������� ��������� ��������). � ������ �������, ������ ���� ������ ������������ ��� �������� �� ��, ��� �������� ���� (��������������� ��������� �����, ���������� � ����������� ��������� ��������) �� ������������ ��� ������� ������������, �� ����, ���������� ��������� �������� �� �������� ������������� ������������, ��� �������, �� �������� �������� (CA) ������������, �, �������������, �� ������������ � �����-���� �������� �������� �������. ������ «�������� ����������» ������������ ��� �������� �� ��, ��� ���������� ��������� ��������, ��� �������, �������� ��������� ������������ � �������. ���� �������, �������� �������� ������� �������� ������������, ��� ������ ������ �����.

�������������� ����������� (����. Multi-host certificates): ���������� ������� ������ � ���� subject �������� ������� CN=hostname, ��������, CN=www.example.com. ��� ����� ����������� �������� DNS, ������� ����� �������� ��� ����� ����� ��������� IP-������� (���� � DNS ������� ��������� ������� A ��� AAAA). � ���� ������ ��������� ���������� X.509 (SSL) � ����� � ��� �� ������ ����� ����� ���� ������������ �� ��� �������� ����� (��������, ��������������� �������� ���� ����� ������ ���� ������������ �� ������ ����, ��� ����� ������������ ����� �������� ��� ������������� ���������� ����������������� ���������, � ���� ������ ��������� �� � ������������� �������� ��� �������������� ����������� (������� ����� ���������� ���������������) ����� ������ ��� ��������). ���� �� ������������ ��������� �ͣ� ������, ����� ��� www.example.com, example.com ��� www1.example.com, � ����� ������ ��������� ����������� ������ � ����������� ���� ������������, ��������� ���� ��� �������������� ���������������������� � ������������ �����������.

�������������� ����������� (����. Multi-domain certificates): ��������� �� ������� �������������� �����������, ������������ ��������� �������� �ͣ�, ��������, ����� ��� www.example.com, example.com ��� ���� www.example.net. ��� ����������� ��ԣ� ������������� ���������� ������� � ���� subjectAltName � ����������� �����. � ����������� ����� ������ �� ���� ������� ����������� ��� �����������, ��������, � ����� ����������� X.509 (SSL) ����� �������������� www.example.com � www.example.net, �� � ����������� �� ������������� �� ��� �����-���� ������������ �����������, �������, �������, ������ ����� ���������� ��ԣ� �������������� ����������������. ������ ��� ���� ����� ����� ������������ ��������� ���� ����������� � ������������ �����������, �� ����� ������ � ����� ������������ ���������� ����� �������.

����������� � ������������ ����������� (����. Wildcard certificates): ��������� �� ������� ����������� � ������������ �����������, � ������� ���� subject �������� CN=*.example.com (* — ��� ������ �����������). ����� ����������� ������������ ����� ��� ����� � ������� ������, �� ���� *.example.com ����� ������������ www.example.commail.example.com, �� �� example.com �, ��������, �� example.net (��� ���� ����� ����� ������� ��������� ���� �������������� �����������).

����������� EV (����������� ����������� ��������� ��� �� ����������� �����������, ����. EV (Extended Validation) Certificates a.k.a. Extended Certificates): ����������� EV ���������� �������� ���������� CertificatePolicies, ����������� ������������������ OID � ���� policyIdentifier. ��������� ����������� EV ������� ����.

����������� DV (����������� ��������� ������, ����. DV (Domain Validation) Certificates): ��������� �� ��������� ��, ��� ���������� ������������� ��������� ������ (DV). ���� ������ �� ������������ �����������. ���������������, ��� �������������� ����� ������������ ������ ��� ����, ��� ���� ��� �����������, ����������� ������ ����������, �������� ���������� ��������� �����. �� ���� �������� CN= � ����� subject ��� subjectAltName, ��������, www.example.com, ����� ��������������� ��� ������, � ��� ���������� �� ����������� (C=, ST=, L=, OU= ��� O=) �� ������ ��������������� ��� ������, � ��� �������� ������ ���� ���� �������, ���� ��������� ��������������� �����, ��������, «not valid» («�������»).

����������� OV (����������� ��������� �����������, ����. OV (Organizational Validation) Certificates): ��������� �� ��������� ��, ��� ���������� ������������� ��������� ����������� (OV). ���� ������ �� ������������ �����������. ���������������, ��� �������������� ����� ������������ ��� ����, ��� ���� ��� �����������, ����������� ������ ����������, �������� ���������� ��������� �����, � ����� ������������ ��������������� � ����������� �������� �� �����������. �� ���� �������� CN=, C=, ST=, L=, OU= ��� O= � ����� subject ��� subjectAltName ����� ��������������� ��� ������. ���� �� ������ ������ ��� �������� ������ ������������, �ӣ �� ����� ����������� �� ���������� �� ������ ������������ EV, ��������� �������������� ������� ������������.

�������������� ����������� (����. Domain-Only Certificates): ����� ������, ������ ��ӣ� ���������� �������, ����������� � ������������, � ������� ������� ����������� ��������� ������������, � ����� ������ ���, ��� ��������� ������ ������, ����������� �� �������������� �� ������ ��������.

����������� ������ �������� ��� �������� �������� (Digital Transmission Content Protection, DTCP): ����� ����������� ����������� � ����������� ��������������� �������������� �������� �������� (Digital Transmission Licencing Administrator, DTLA — www.dtcp.com) � ������ ������������ Smart-������������, �����-�������� � ������� ��������� ������������ ��� ������������ �� ��� ������������ ����������. ����������� DTCP �� ���������� ������ X.509, �� ��� ����� ���� ������������� � ��������� ����������� TLS (RFC 7562). ����� � ���� ��������� ��� �� �����������.

������

������� ������������ X.509

����������� X.509 ����� ����������� �������, �� ���� ��� ����� ���� ��������� ����� ��� ����� �������������� ��������������� �������� � ������������� ������, ���� ���������� ����� ���� ������ �������� �������� �� ��������. ��������� ��������������� ������� (��), ����������� � ���� ������������� ������������� �������������� �������, ������������ � ���������� ���� RFC. ������� «��������������� ����� (��)» (������ � ���������� EV ��������� «�����Σ���� ��»), �������� ��� �������� �����������, � ������� �� ����� ���� ��� �������ԣ� ���������� X.509, ��������, ���������������� ������, ���������� �������� �������� (��������, ����� � ���������� ������������� ������� ����������) �������������� �������, �������������� ����� �� ������ �������� ������ ��� �������� ��. �� ��������� ���-�� ������ �� ���������� ������� DNS � �������������, ���� ����������� DNS ��� �������. � RFC 4158 ���� ��������, �� ������ ���������� � �������������� ���������� � ���, ��� ����� ��ģ��� ��������� ������� ������������ � ������� ��� ����� subjectissuer, �������� ��, ����� ����� �������, ������ SubjectKeyIdentifierAuthorityKeyIdentifier.

���������� ������ �������� ������ � �������� ���������� ���������� �������� ������������, ������������ �� ��� ���� ������ �������� ������������ ��. �������� ����������� ���������� �����-���� ���������� �������� (� ������ ��������� ��� ���������������� � ����������� ������������ �������� � ������������ �����������) � ��� ��������� ������� ������������ ������ ���������� ������� �������. ��� ��������� �� ������� � �������� ����������� TLS/SSL ����������� (��� ������ ������������) ��������� ��������, ���������, ���������� ����������, ������ ��������� ��� � ���� ���� �� ��������� ����������� (����������� ��), �������, ��� �������������, ��� ������������� ����������� (�������, ����� ��, ������ ���������������� � ����������� ������������ ��������). �������� ���������� (���������� ��) ������������ �� ������� ���������� �������� � ����� issuer � subject, �� ����, ��� ���� KeyUsage ����������� � keyCertSign �/��� � ���� BasicConstraints ������� cA ���������� � TRUE. ������� ���������� ������� ������������ ������ � RFC 4158, ��������� ������� ������������ ������� � RFC 5280. ��������� �������� ���������� ������������ �������� �� ������� 3:

������� ������������ X.509

������� 3 — ������� ������������ X.509

������

������������� ������������ X.509

�������� ����������� (issuer) ���������������� � �������������� ������� Distinguished Name (DN, ����������� �����), ������� � ��������� �������������� ��� ������������� ������������ ������� � DIT (�������������� ������ ��������) DAP ��� LDAP. DN �� ������� ������ � ������� ������� ��� URL/URI. ������ DN ����� ������ CN=Type of Certificate, OU=Certificate Division, O=Certificate Company name,C=Country (CN=, OU=, O=, C=), �� ����� ����� � ����� ������� ������ OU=, O=, C=, ��� ���� CN=, O=, C=, ������� (����� ������� �������� ��������) �� ����� ����� ������ CN=, OU=, DC=, DC=. � �����, ������ ����� ���� ������ — ��������� �����. DN ������� �� ���������� �����̣���� �������� RDN (Relative Distinguished Names, ������������� ���������� �ͣ�), �� ���� CN= ��� C= ������������ ����� RDN � ������� DN. ���������� X.509 �� �������� URI ��� ��������� �� ���� ����� ���� ������������ ��� ����������� �������, �� �� ����� ��������� (� ������ �����) URI ��� ��������� CRL. ������������ ����������� ����������, — � �������, �������� ��� �������� �������, — ������ ������� �������� �������� ����������, � ���� ���������� ������� ������������, �� � ��� ������������� �����������, �����-���� ��������, �� ���� ��� ���. �������� ����������� �������� ��������� �� ���������������� � ���������� (� �������� ��� ��������������� �� �������� ��������), �������� ������ «������ � ������������� � �������� ���������».

����������: ���������������� � ����������� ������������ ����������� ��������� (� �������� ��������) �������� ����������� ����������� � ������������ � ����������, ������������� ����������� ��������, � �������������� �� «��� ������ ��������» �� ��������� �������� ������������ �� � ������������ �� ������ �����������.

��� ��������� ���������� � ������� � ���������� TLS/SSL, � �������� ������� ����������� TLS/SSL ��� �������� ���������� (��� ������ ������������) �������. ����� ����� ���������� (��������, �������) ������� ������� CN �� DN � ���� subject (�/��� � ���� subjectAltName, �������� RFC 6125) ��� �������� �������� (������, ������ ���-�������, ������ ��� www.example.com). ����� ���� ���������� ����� ������������ DN � ���� issuer ����������� X.509 ������� ��� ���������� ���������������� ��������� ����������� � ��ϣ� ��������� ��������� (�, ���� �������� �� ����������, ��������� ���������� — ������ � ���� �����������, ��������� ������������ �������). ���� ������ �������� �������� ����������, �� ��� ����� ����������� ���������������� �������� ����������� ��������� �������������. � ����� (���� �ӣ ������ �������) �������� ����, ������������ � ����������� X.509, ��������� ���������� (����������) � ��������� ��� ���������� ������������ � ��������� � ���� subject ���������.

�������� ������ ��������� ������ ���� ����������� ���������� (�����������) � �� ��������� �������� ������������ — ��� ������ �������� ���� ����������� �������, � ��������� ������������ �� ����������. ������ TLS/SSL ��������� ��������� �������� ���������, � ���� ������ � ������ � ������ ���������� ���� �����������. ���� ���������� �������, ����� ������ ������������ ���� ����������, �� ������ ������ ����� ���������� ��������� ����������� �����������, ��� ���� � ���� ������ ������� ��� ����������� �������� � ������������� �����������, ���������� ����� ��ԣ�, ��������, �� ����� ��� � ���-������ �������������� �������.

������������� ������������ X.509

������� 4 — ������������� ������������ X.509

��������� �� ����� ����������� subject � subjectAltName

������

����������� X.509 � ������������, ��������������� ������ ���-��������

��������� ���-������ ������������ ������������� �������� �� ������ ��������� ���������� �� ������ ������������ X.509 (SSL). ��������� ����� �������� ������ ����� ������ ��������� (�� ��� �� ������� � ���, ��� ��� �����).

����� �������� ���-����� ������������ �������� � ��� ����������, ����� ��������� �� ������� ������� �������. ��������/�������� ����� ������ ������ ������������, �������� �� ��������� TLS ������������ �����������. � ������ �������, ������ ��������� ������ ���������� ������� ��������� ����� ������������ ���-����������� �������� (��� ���������� ��������������������� �����). � ��� ����� ���������� ����� ���أ���� ��������.

��� � ޣ� �� ����?

�������� ������� � ������� ������������ X.509, � ����� � ��������� ��������� �������, ���������������� � ���� ������������ X.509. � ���������, ����� ����� ���� ������������ (� ����������� �������) ���������� (����� 5 � ������������������ ������ ����������� ��������� TLS), � ������� ���������, ����� � ������� ��� ������ � ��������� ����� ���������������� ����������� (��������, ��� � ������������� ������������ (� �������� � �������� �������) ������ ������� ��������� � �������������� ��������� �����, � ������ �������� ��������� �����, — � ������ ������ ������, — ����� ������������ ��� ���������).

������ �����������, ��� ����������� example.com ����������� ������������ ���-����� � ���� �������� ������ ���-����������� �����������, ������� �������� ��� example.net. ���� ������� ������������ ����������� � TLS-�������� �� www.example.com, �� �� ������� ������� ���������� � ������ www.example.com (�� ���� � ������ ���� �����, � �������� �� ������������). ���� �� �� ������� ���������� � ������ www.example.net (�������� ��� ����������� �����������), �� ����� ������� ��������� (�� ����� ���� �� ���� ���� �������� �������� ������������ ���������� ���������, ���� ��������� �������� ������ ���������� ������� ������).

����� �������� �� ���� ����� ������, � RFC 6066 ���� ������� SNI (Server Name Indication, ��������� ����� �������), ����������� ������� (��������) ���� ������� � ��������� ServerHello, ��� �� ������������ � www.example.com, ����� ����������� ������ �����-������ ������� ������������� ��������� ���������� (www.example.com). ������! ������� ����� ��������, ���!

�� ��� ������.

�� ���� ���������� �������������� ����� (CA) �� ������ ���������� ��� example.com ������-�� ��� example.net. ������ �������� ������ (������� ������ ��� ��� ���� �������� �������� ��ϣ ����� �������������) ����� �������� ���������� �� ���� �����. ������, ��� �� ������ �� ������ 5 ������������������ ������ ����������� ��������� TLS, ��������� ���� ������ ����� � ���� �� ������ ����������, �� � ��������������� � ��� �������� ����. ��! ������ ��� �������� �������� ����! ��-��-��!

� RFC 7711 ������������ �������, ��� ������� ������������ (example.com) ����� (��������� ��������� ������ DNS SRV) ���� ������������ �������������� SSL-����������� ������� ������� (� ����� ������ example.net) ��� �������� ����������� ������ �����, ��ԣ� �������� �� ������������� ���-�� �� ���-����� ���������� �������������� ������ � ������� JSON. ������������ �� ����� �������� ������� ������� SSL-���������� �, �������������, �� ����� ������������� ���� �������� ���� �������-����������. � ������, ����� ���������� ���-����� ������������ ��� ������� ����� ��������� ������ DNS SRV, � �����, ��������� ���������� URL, ����ԣ� ������ ������������� (�����������, �� ������ ������ �������, � ���� ������ �������, ��� ���������� ������������ example.net). ��� ��������� ���� ����������, ������� � �������� ������ ���������� �� example.net ��� ������� � example.com. ��� ������� �������, ������� ���������� ��������� � ���������� ������. ��� ���������, �����, �������, �������.

����������: � ���� �� RFC ����������� ������������ ����������� �������, ��� �� ��������� ����������� ������ �������-���������� ���� ���������� X.509 (�, ������, ���� �������� ����).

� ���� �������� ���������� � ������ ��������� ������� � �������������� DNSSEC � DANE, �����-������ �� ��� ���� ����������� ���������������. ������ �� ���������, ��� ��� ����� �����.

�������������� ��������� �� ����� ����������� subject � subjectAltName

������

���������, ��������� � ������������� (CMP, CMC/CMS, CRMF, SCVP, OCSP, HTTP)

���������� X.509 ������������ ����� ��������� ������. ��������� ��������� ��������� ����������� ����������� � ������������� ����� ���������������� ����. ����� �������� � ������������� X.509, ��� �������� ������� �� ����������, ��������� ������������ ����������� � ������, ����������, � ���������, � ��������� ���������� ������������� (Certificate Management Protocol, CMP, RFC 4210) � � PKCS #10 (RFC 2986), � ������� ����� � ���� �����������.

������ �����: ��� ����������� � ������������� � �������� ������ ������������ (Certificate Revocation Lists, CRL) ��������� ��� ����������. �������� ���������� ������������� (Certificate Management Protocol, CMP, RFC 4210, �����̣� � RFC 6712) ������������� ������ ��� ����������� ������������� (������ ��������� ������������ (Certificate Request Message Format, CRMF) ������̣� � RFC 4211). � RFC 4210 ���������� ��������� ���������������� ������� (����� ��� HTTPS), ������� ����� ���� ������������ ��� ��������������� �������� ����������� �� ����, �� �� ���� ������ ����������� ������������� ��������� ��� ��������� ������������ (�������� CMC/CMS ����).

�������� CMC/CMS (Certificate Management over CMS, ���������� ������������� ������ CMS), ������̣� � RFC 5272, RFC 5273, RFC 5274 � �����̣� � RFC 6402, ��������� ������������ ���������� ��������������� �������� ����������� �� ������������� ������� � �� (������� ����� ������������� ��) � �������. ������ ��������� ����� ���� ���� PKCS #10 (RFC 2896), ���� CMRF (RFC 4211). ���� �������� ������� �������� CMC, �� ������ ��� �������� CMS. ����������, CMS — ��� Cryptographic Message Syntax (��������� ������������������ ���������), � ������� ����������� ������ ������ �������� ������� � ������ (��� PKCS #10 ��� CRMF). ������ �������� ���������� ��� ��������, ������� ����� ���� ��������� ��� �������������, � ��� ����� ���������� ������ ������� (�������� ������������), �������������� � ������������� ���������� �������. ��� ������� � ���������� (�������) ��������.

�������� ������-��������� ������� ����������� (Online Certificate Status Protocol, OCSP, RFC 6960) — ��� �������� ��� ������-�������� ����������� ������������. RFC 6066 ��������� �������� TLS ����� ������ ��� ����������� OCSP-������ ����������� �� ����� ���� ��������� �����������, � RFC 6961 ���������� ����ݣ���� ������ ‘certificate_request_v2’, ����������� ������� ��ߣ�� ������� ������� OCSP.

�������� ��������� ��������� ������������ (Server-Based Certificate Validation Protocol, SCVP, RFC 5055) ��������� ������������ ������������� ������� ��������� ���������� �������, � ������ ���������� � ��������� ���� ������������. ���� �� ������ SCVP �������� �ݣ � ����������, �� �� ����� ������������� �������������� ����������������, ��������, �������� ������� ����������� (��� OCSP) ��� ��������� ������������� ������������ (��� CMP).

� RFC 4387 ���������� ��������� ������������ ����������� � ������������� X.509, ������� � �������� CRL �� ��������� HTTP � �������������� ������ GET (��� ��� ���� ����� �� ������������, ����� ��������� ��� �������� ���������� X.509). RFC 4386 ���������� ������������� DNS-������� SRV ��� ����������� ������������ ������������ � �������� OCSP.

�������� ���������� ������������� (Certificate Management Protocol, CMP)

�������� ���������� ������������� (CMP) ������̣� � RFC 4210 (�����̣� � RFC 6712), ������ ��������� ������� ������������ (Certificate Request Message Format, CRMF) ������̣� � RFC 4211.

� ���������� �������� ����� ���������.

�������� ��������� ��������� ������������ (Server-Based Certificate Validation Protocol, SCVP)

� ���������� ����� ��������� ��������. �������� OCSP � ������������ ������� �������� ���� ��������.

���������� ������������� ������ CMS (Certificate Management over CMS, CMC/CMS)

� ���������� ����� ��������� ��������.

�������� ������-��������� ������� ����������� (Online Certificate Status Protocol, OCSP)

�������� ������-��������� ������� ����������� (OCSP) ������̣� � RFC 6960, � ��������������, �������������� ������� ������������������ ������ ��������� ������̣� � RFC 5019 (The Lightweight Online Certificate Status Protocol (OCSP) Profile for High-Volume Environments (�����ޣ���� ������� OCSP ��� ���������������� ����)). � ���� ������� ����������� �������� ������ OCSP-�������� ��� ������ ����������� � ��������� ����������� �������������� (OPTIONAL) ����� � �������� � ������� (�������� ���������� ����). RFC 6960 (���������� �������� RFC 2560 � RFC 6277) ������ �������� ��������� ������� � ������������ RFC ��� ���������� ������� ������������� � RFC 5019, � ����� ��������� ���� �����������, ���������� ����� �������� ����� � ������������. � RFC 6961 ������̣� ����� ������ ‘certificate_request_v2’, ����������� �������� ���������� (���������) ������, � ����� ����������� �������� � ����� ��������� ���������� � ���� ������� ��������� � ������� ������������ (������� �������������).

OCSP — ��� ������ ������������ ������� ������ ������������ (Certificate Revokation List, CRL). ���� �������������� ����� ������������ ������ OCSP, URI ����� ������� ������ ����������� � ���� AuthorityInfoAccess (AIA) ����������� (�������������� ������, ����������� ����������� EV, ������� ������������ OSCP). ������ ���������� ������, ����������� ����������� ����������� ��������, ���������������� ����������, ������� ��������� ���������, � �������� �� ������� OCSP ����������� �����, ����������� ������ ����������� ��� ����������� (good), ���������� (revoked) ��� ����������� (unknown). � RFC ��������� ���������� ������� � ������ ����������� ���� ��������� ������������ ���������� (� ���������, � �������� �������� ��������� LDAP, SMTP � HTTP) � ��������� ���������� ������������ ����� � URI ���� AIA �����������, ��������������� ��������. ����� RFC ���������� ������ ��������� HTTP (������������ GET � POST) ��� ��������������� OCSP. ������ ��������� ������� � ������:

# ������ �������
OCSPRequest 
  TBSRequest
    version                      0 = v1
    requestorName                OPTIONAL
    requestList (���� ��� ���������, � ������ RFC 5019 - ������ ����)
      reqCert
        hashAlgorithm            AlgorithmIdentifier
        issuerNameHash           ��� DN ��������
        issuerKeyHash            ��� ��������� ����� ��������
        serialNumber             CertificateSerialNumber
        singleRequestExtensions  OPTIONAL
    requestExtensions            OPTIONAL
  optionalSignature              OPTIONAL

����������:

  1. ������� ������� OCSP �������� ��������������, �, ���� ��� ������������, � ���� requestorName ������ ���� ������ �������, ����������� ���������. ��������, ��� �������� ������� � ���������� ��������� ������ ���� �������� ���� ��������, ������������ ��������� (��� ��� ��������������� ������).

  2. ���������� ������������ EV (Extended Validation) ������� ������������� ������ OCSP, ��� ���� ��������� ����� ������������ ���� ������ �������� ������������.

# ������ ������
OCSPResponse
  responseStatus
    successful        0  -- ����� �������� ���������� ������
    malformedRequest  1  -- �������� ������ �������
    internalError     2  -- ���������� ������ ������� ��������
    tryLater          3  -- ��������� ������� �����
                         -- (4) �� ������������
    sigRequired       5  -- ������ ������ ���� ��������
    unauthorized      6  -- ������ �������������
  responseBytes       OPTIONAL
    responseType      OID (1.3.6.1.5.5.7.48.1.1 =BasicOCSPResponse)
      BasicOCSPResponse
       response       
        ResponseData
          version          0 - ������, �� ��������� v1
          responderID      ���� �� ����:
            byName         1 - ���
            byKey          2 - ��� ��������� ����� ��������
          producedAt       GeneralizedTime
          responses        
            certID         
              hashAlgorithm       AlgorithmIdentifier
              issuerNameHash      -- ��� DN ��������
              issuerKeyHash       -- ��� ��������� ����� ��������
              serialNumber        CertificateSerialNumber
            certStatus       CertStatus
              good           0
              revoked        1
              unknown        2
            thisUpdate       GeneralizedTime
            nextUpdate       GeneralizedTime OPTIONAL
            singleExtensions OPTIONAL
          responseExtensions OPTIONAL
        signatureAlgorithm   AlgorithmIdentifier,
        signature            ��� ������ ������
        certs                OPTIONAL

����������:

  1. ������ good � ���� certStatus �������� RFC �������� «�� �������», �� � ����� ���������� (Extensions) ����� ���� �������� �������������� ����������.

  2. ������ unauthorized � ���� responseStatus ��������� �� ��, ��� ������, �������� �����, �� ����� ����������� ���������� �� ����� �����������.

  3. � RFC 6960 ���������� ��������� ���������� ��� ���������, ����� ����, � ��� ����� �������� ����� ���������� CRL (RFC 2459).

  4. ������ ����� ������������� ��, �������� ����������, ��������� � ���� serialNumber, �� �������� ��������� ����������� ����� ��������������� ��������������� ������. � ���� ������ ����� ������ �������� ���������� (���������� �������� ���� ��������������� ������, ������������ �����) � ���� certs, � ���� ���������� ������ ���� �������� ��������� �����������, ���������� � ���� serialNumber.

  5. RFC 5019 ���������� ������������������� ������ ��������� (��������� ����������� � ������ �������� OCSP) ��ԣ� ���������� ����������� �������������� (OPTIONAL) ����� � ����� �������� �������� �� ���� ��� �������� ���������. ������������ � ���������: ��������� OCSP ������ HTTP ������ � �������������� ������� GET � POST. ������������ � ��������: ������ �������������� ������������ ������������ (�������� ���� requestList ����� 1), ��������� ��� ��������������� ���� singleRequestExtensions, �������������� �������� requestExtensionsoptionalSignature (���� ������ ��������, ���������� ������ ������ ��������������� �������). ������������ � �������: ��ԣ� ��������������� ����������� �� ���� ���������� � �������, RFC 5019 ��� ��������� ��������� (� ������) ������, ����� ����, ��������� �������������� ���� responseExtensions (�� ���� singleResponseExtensions ����� ���� ��������). ����� ��, ���� ����� �������� �������������� ��, �� ������ �������� ���������� (���������� �������� ���� ��������������� ������, ������������ �����) � ���� certs, � ���� ���������� ������ ���� �������� ��������� �����������, ���������� � ���� serialNumber.

����� ����� OCSP

OCSP �������������� ��� ������� ��������� ������� (� ����������������� �������� ������� ������������ ������� CRL), ��� ��� ������������ ������� ����� ��������� ������ ������ ����������� �� ��� �������� � �������������. � ���������, ��� ��������� ����������� EV ����� ���������� ������� (��������, �������) � ���������� ������ ������� ��������� OCSP-�������� ����� ����������� ��������� ������������ EV. ��� ��������, � �������, ��� � ���������� ������� ��������� � ������� HTTPS ����� (� � ������ EV ������) ����������� �������������� �������� �� ����������� ��������� � ������� OCSP. ��������� �ӣ ������ ������ ��������� ���������������, ��, �� ��������, ��������� �������� ������������� HTTPS ��� ����� ������ (������ ����, ����� ��������� ����� �������� � ��ģ���� ������ DNSSEC), ������������������ �������� OCSP ����� ��������� � ��� ������ ������ �� ������ �� ������ ���� DDoS-����� (���� � �� ������ ����������).

RFC 6066 ��������� �������� TLS, ����� ������ ��� ����������� ������ ����������� � ������� TLS (OCSPStatusRequest), ��� �����, ��������, �ݣ ����� ��������� �������� �������� OCSP, �������� ���������� ������ OCSP � ������� ������� ������� ��� ���������. � RFC 6961 ����������� ������� ������ �������� �������� OCSP ��ԣ� ������������� ������ ������� TLS ‘certificate_request_v2’, �������, ����������������, ��������� (���� ��� ������ OCSP ������ �� ����������� ������ �������������� ������ ���������) ���������� ������ OCSP �� ������� (������ ��� ����� �������� OCSP ��-�� �������� ������������� � ������ ��������� �������) � �������� ��������� ��������� � ������� ������������ (������� ��� ������������� �����������) � ����� �����. � ������� (�� �� ��� ��������, ��� ��� ����� �����), ��������� �������������� ������������� ����������� ����� � ����� ����� ���أ���� ������, � RFC 7924 ������̣� �����, � ������� �������� ������ ����� �������� �������, ��� � ���� ��� ���� ��� ����������� ��� �������� ������������� �����������.

������

������ ����������� X.509

� ���� ������� � ����������������� (�� �� �������������) ������������ ����������� ������ � ���������� �������� ����� (���������� ���������� ����������) ����������� X.509. ���� ������ ������̣� � RFC 5280 (�����̣� � RFC 6818).

���������� X.509 ������������ ����� ��������� ASN.1, �������������� � ������� ������̣���� � X.690 ���������� ������ ����������� (Distinguished Encoding Rules, DER), � ���������� � ���� �������������� ������ �� ��������� ���������� �������������� �������� (Object Identifiers, OID).

����������:

  1. � X.509 (� LDAP) ������ ���������� ����������� ���������������� ������� (��� lowerCamelCase, ���� �� ������������� ���� ������). � ����� ������ ����� �������, ��� ������ ���������� X.509 ������������� � �������� ��������, ������� — ���. ����� ����, ��� ������� ������������ LDAP, ����������� � ��������������� DN, �������� ����������������� � ��������; ��� ��������, ��� ����� ��������� ��������������� � ��������.

  2. RFC 7250 ���������� ����ݣ���� ������ ����������� ��� �������, ����� �������� ���� ��� ������� � ���������� ������ ���������� ��������� (��������, ���-����). ���� ����������� ������ ����������� ���������� ������ ������� subjectPublicKeyInfo (� ��� ��� �������). � ���, ��� ����� ����������� ������ ����������� ������ �����������, ����������� � ���������� ClientHello � ServerHello � ���� ����������� TLS/SSL.

��������� OpenSSL ���������� X.509 �������� ��� (�������� ���� ������� ����):

Certificate:
 Data:
  Version: 3 (0x2)
  Serial Number:
   bb:7c:54:9b:75:7b:28:9d
  Signature Algorithm: sha1WithRSAEncryption
  Issuer: C=MY, ST=STATE, O=CA COMPANY NAME, L=CITY, OU=X.509, CN=CA ROOT
  Validity
   Not Before: Apr 15 22:21:10 2008 GMT
   Not After : Mar 10 22:21:10 2011 GMT
  Subject: C=MY, ST=STATE, L=CITY, O=ONE INC, OU=IT, CN=www.example.com
  Subject Public Key Info:
   Public Key Algorithm: rsaEncryption
    RSA Public Key: (1024 bit)
     Modulus (1024 bit):
      00:ae:19:86:44:3c:dd...
      ...
      99:20:b8:f7:c0:9c:e8...
      38:c8:52:97:cc:76:c9...
   Exponent: 65537 (0x10001)
 X509v3 extensions:
  X509v3 Basic Constraints: 
   CA:FALSE
 Netscape Comment: 
  OpenSSL Generated Certificate
 X509v3 Subject Key Identifier: 
  EE:D9:4A:74:03:AC:FB...
 X509v3 Authority Key Identifier: 
  keyid:54:0D:DE:E3:37...

 Signature Algorithm: sha1WithRSAEncryption
  52:3d:bc:bd:3f:50:92...
  ...
  51:35:49:8d:c3:9a:bb...
  b8:74

����������: � �����ģ���� ����������� ������, ���� ��� ������ ��� ��������� ���������, ���� �������� ��� ���� ��������� (����� ��������� ���������� ������������).

���������� X.509 ������� �� ��������� ����� (���������):

Version � ����� ������ ��� ���� ����� ��������� �� ������ 3 (X.509v3). ��������� ��������� ���������� � ����, �������� ����� ���� ����� 2. ���� ���� �������, ��������������� ������ 1 (�������� 0).
Serial Number ������������� ����� �������� �������� �� 20 �������. ���������� ���������� �������� ����� ������� �����������, ����������� ���������� �������������� ������� (�� ���� ��� �� ����, � ���������� ������, �� ���������� ����������) � ��������������, ����� ����� �������, � ������� ������ ������������ (CRL).
Signature ��������� ������� ���� ������ ���� ��� �� OID, ��� ������ � ���� SignatureAlgorithm ����.
Issuer DN (Distinguished Name) ��������������� ������, ������������ �, �������������, ��������� ������ ����������. ��� ����� ���� �������� ��� ���������� �������������� �����. �������� ���� issuer ����� �������� �� ������������ ������ ��������� domainComponent (DC=), countryName (C=), commonName (CN=), surname (SN=), givenName (GN=), pseudonym=, serialNumber=, title=, initials=, organizationName (O=), organizationalUnitName (OU=), stateOrProvinceName (ST=) � localityName (L=). ������ �������������� ������ �������� CN=, C=, ST=, O=, OU= � serialNumber=, ��������� �������� ������������� (serialNumber= ����������� �����, �� ��� ������������ EV �������� ������������, � L= ����������� ����� (���� � ���������� �����������), �� � ������������ EV ������������ ��� ���������� ��������). ������������, � RFC 5280 ��������� ����� ��������� ���������� ������ ���������� DN (������ X.500 O=, C= ��� ������ IETF DC=, DC=), �� ��-����� ��� �������������� ������� X.500. DN �������� ����� ��������� �������� ���:

# ��������� �� ��� ������ �������� ������������� ��� ��������
C=MY,ST=some state,L=some city,O=Expensive Certs inc,
 OU=X.509 certs,CN=very expensive certs
# ���������� ��������� ������������� ����� RDN,
# ����� ������������ ������������ ��������.
# C  = ������������� ��� ������ �������� ISO3166
# ST = ���� ��� ������� (����)
# L  = ��������������, ������ - �����
# O  = ����������� - �������� ��������
# OU = ������������� �����������, ������ - ��� ����������� ��� �����
# CN = ������������ ���, ������ - ������������ �������� ��� �����
Validity ������������ ����� ��� ������� (��������) notBeforenotAfter, ������������ ������ �������, � ������� ���������� �������� ��������������, ���, ���� ������������ ������ ������� NotAfter, ��� �������� ���������� ��� ������, ����� ������������ ����� ���ģ��� ��������������� ��������������� ������ (��������). ���� �� 2049 ���� ������������ ���������� ��� UTCTime (������ YYMMDDHHMMSSZ, ��-��, ��� ������������ ����� �������), � ����� 2050 ���� — ��� GeneralizedTime (������ YYYYMMDDHHMMSSZ, ��� ������������ �������� �������). Z � ������� ������������� ������� — ���������� ���������, ����������� �� ������������� �������� ����� Zulu Time (UTC, �� �� ����� �� ��������), ��� ţ ���������� ��������������� ��������� �����.
Subject DN, ������������ ��������, ���������������� � ���� ������������. ���� ��� �������� ����������, � ����� issuer � subject ����� ���������� DN (� � ���� BasicConstraints CA ����� ����������� � TRUE). � ����������� ��������� ������������/������� DN � ���� subject ��� ��� ���� �������� �������������� ��������� ��������. ��� �������, ������� CN (RDN) ������� DN �������������� ��������� ���������� ��� ��������� ��������, ������� ����� �������������� ��� ����������������. �������� ���� subject ����� �������� �� ������������ ������ ��������� domainComponent (DC=), countryName (C=), commonName (CN=), surname (SN=), givenName (GN=), pseudonym, serialNumber, title, organizationName (O=), organizationalUnitName (OU=), stateOrProvinceName (ST=) � localityName (L=). DN �������� ��� �������������� ������� � ���-����� ����� ��������� ���:

# ��������� �� ��� ������ �������� ������������� ��� ��������
C=MY,ST=another state,L=another city,O=my company,OU=certs,
 CN=www.example.com
# ���������� ��������� ������������� ����� RDN,
# ����� ������������ ������������ ��������.
# � ������ ������������� ����������� � ���� ���� ����� �����������
# GN=, SN= ��� pseudonym=
# C  = ������������� ��� ������ �������� ISO3166
# ST = ���� ��� ������� (����)
# L  = ��������������, ������ - �����
# O  = ����������� - �������� ��������
# OU = ������������� �����������, ������ - ������������� ��� ������������ ������ ��������
# CN = ������������ ���, ������ - ������������ ��������� ��������, �������� www.example.com

������ ��������� ����������� ���������� DN �� ���� issuer � �������� ������� CN (RDN) ������ ������������������ ��������. ������ �� ����� ������, DN ��������, �������������� �� ��������� DN ���� issuer �� ������� ����, ����� ��������� ���:

# ��������� �� ��� ������ �������� ������������� ��� ��������
C=MY,ST=some state,L=some city,O=Expensive Certs inc,
 OU=X.509 certs,CN=www.example.com

� �����ģ���� ������� CN=www.example.com ����� �����������, ���� ��� ������� � ���-����� ������������ URL http://www.example.com. ���� �� ��� ������� � ����� ����� ����� ������������ http://example.com, ������� �������� ����������� ���������� ��������. � ���� ������ ����� ������������ ���� subjectAltName ��� ���������� ����� �������� �����������, ����� �������� example.com (��� ����� ������ �������� �����, �� ������� ���������������� �������� ����� �����������).

���� ����������� ������������ � ��������� ����� (2011 ���) ���������� ��� �������� �������� RDN CN= ���� subject, RFC 6125 ����������� ������������ ���� subjectAltName, ���������� ������������ ��������� ��������, � ����� ��� ��������� ������������ �������� �������� ���� subjectAltName ����� �� ��������� ����� ��������� �������� CN= � ���� subject. ��������, ����� ��������� ����� ��� ���������� � �������� ������������ ����� �������������� ���� ���������, � ������, ��� ��������� ���� ��������� ���������, ������������ �������� ������� �������� � � �������� �������� CN= ���� subject, � � ���� subjectAltName.

���� subject ����� ���� ������, � ���� ������ �������, ������� ����� ����������������, ������������ � ���� subjectAltName.

����� CN=www.example.com/emailAddress=me@example.com ����������� ����� � ������ ��������� �� ��������� ������������� OpenSSL ��� ��������� ������� �� ���������� ����������� (Certificate Signing Request, CSR). � ���� ����� ������������ ������ ������� emailAddress, ������� ����� �������������� ��� �� ��������������. ����������� �������������� ������� �������, ����� ������ � ��������� ������ ����������� ����� ���������� ������ ��� �������� CSR � ������� OpenSSL, �������� �����, ����� ������� ��� �ݣ ���� ���������� ��� ������ ������� ����������� �����. ��� ��� ������� ��� ������� ��������? ��������� �� ����� ����������� subject � subjectAltName.

SubjectPublicKeyInfo �������� ��� ������� (��������), algorithm (OID ��������� ��������� ����� �� ������, ������̣����� � RFC 3279) � subjectPublicKey (�������� ���� �������� � ���� ������ ���). ������ �������� algorithm ��� ������������� OID ��������� RSA (rsaEncryption):

1.2.840.113549.1.1.1

����������: � RFC 7250 ������̣� ����ݣ���� ������ �����������, ��������� ������ �� ������� �������� � ���� ��� ��������.

IssuerUniqueIdentifier �������������� ����. ���������� ���������� �������� ��� ��������. � RFC �������������, ����� ��� ���� �� ��������������.
SubjectUniqueIdentifier �������������� ����. ���������� ���������� �������� ��� ��������, ������� ����� ����������������. � RFC �������������, ����� ��� ���� �� ��������������.
Extensions

������� ��������� ���������� ���������� � ��������� RFC, ����� ������������ ������ ����� �������� (�� ������ ��������� ������). ���������� ����� ���� �������� ��� ��������� (CRITICAL). ����������: ������� CRITICAL ����� ���������� � ������ �������������. ���� �������������� ���������� ����������� ����������� ����� �������� � �������� CRITICAL (������� ��� ������ ����� ����������������), �� �� ����� ���������� ������ ����������, ��� ������ ���������� �� ��������� � �� ��������� ���� ����������.

����������:

  1. � RFC 5280 ���� ����������� ����������� ���������� (OID ������� ���������� �� 2.5.29, ������̣�� � ������������ ���������� X.509), � ����� ��� ���������� «������� ����������» (Private Extensions) (OID ������� ���������� �� 1.3.6.1.5.5.7.1). ������������� ������� ��� ���������� �� ������������ OID Private Internet �������������� IANA. �����ģ���� ���� ����������, ���� ��� �� ������������� ��������, �������� ������������ (OID �� ������������ 2.5.29).

  2. � RFC 7633 ���������� ���������� ����������� X.509 �� ������������ Private Internet (OID 1.3.6.1.5.5.7.1.24 id-pe-tlsfeature), ����������� �������� � ���������� ���������� ����������� TLS (������������������ �� ��������� TLS-�����). �� ����, ����� ���������� ����� ��������� ������� ������� ������������ ������������� ������. ���, ���� ���������� �������� ���������� ����������� TLS status_request, � ������ �� ���������� ���������� � ������� (� ��������� CertificateStatus), �� ������ ����� ������� ����� � ������������� �������������� ������.

 
AuthorityInfoAccess ���������� �� ������������ Private Internet (OID 1.3.6.1.5.5.7.1.1). ���������� ������ �������� �� ������������ AIA (�� ������� � AIA � LDAP — ��� ������ ����). ������������ ��� �������� ���������� � �������� ��, � ��� ����� Online Certificate Status Protocol (OCSP) ����� ��������. ���������, ��� ���� ����������� EV �������, ����� ������ ����������� ������� ����������� �������� � ������ 24×7 (� ���� ����� ����� ������ ����������� � ������� OCSP), � ����������� ���������� EV ������������� ����� ���� �� ���������������.

AuthorityInfoAccess = AuthorityInfoAccessSyntax
# ����� ������������ ��������� ��������� AuthorityInfoAccessSyntax,
# ������ ������� ��:
 accessMethod  = OID
# ����� ��������� ��������:
# 1.3.6.1.5.5.7.48.1 = ocsp
# accessLocation = URI ������� OCSP ��
# ��� ��-��������
# 1.3.6.1.5.5.7.48.2 = caIssuers
# ������������ ������ ���� ���������� �������� �� �������� ��
# accessLocation = URI �������� ��������� ��

 accessLocation = URI (������������� ����� ����������� �����
                       ��� X.500 DirectoryString)
authorityKeyIdentifier [OID: 2.5.29. ] �������������� ����������. ����� ��������� ��� ����:

keyIdentifier             (0) KeyIdentifier
authorityCertIssuer       (1) GeneralNames
authorityCertSerialNumber (2) CertificateSerialNumber

[OID 2.5.29.35] �������� ����������� ������������ �������� keyIdentifier ��� ���� ������������, ����� ���������. ������ keyIdentifier — ��� 160-������ ��� SHA-1 ���� subjectPublicKeyInfo, �� ���������� � ������ ������. ������� ����� ���� �������� �������� ���� (�������) ������������, ��������� �������������� ������� ����� ��������� �������� ������������, � ������� �� ������� ����� ���� ������ ����, �� ������� ��������� ��� ����������.

subjectKeyIdentifier [OID: 2.5.29.14] �������������� ����������, �� �������� ����������� ������������ ��� �������� �� ���� ������������ � �������� ���������������� �������� ��� ���������� ���� (�������) ������������. ������ SubjectKeyIdentifier — ��� 160-������ ��� SHA-1 ���� subjectPublicKeyInfo, �� ���������� � ������ ������.
KeyUsage [OID: 2.5.29.15] ���������� ����, ��� ������� ����� �������������� �������� ����, � ����� ��������� ��������� ��������:

digitalSignature (0)
nonRepudiation   (1)
keyEncipherment  (2)
dataEncipherment (3)
keyAgreement     (4)
keyCertSign      (5) # ��������� �� ��, ��� ��� ���������� ��
cRLSign          (6)
encipherOnly     (7)
decipherOnly     (8)

���� ������ �������� keyCertSign, �� � ���������� BasicConstraints �������� cA ������ ���� ����� ����������� � TRUE, ������, ���� ������������ ���������� BasicConstraints, � ������� cA ����������� � TRUE, �� ������� KeyUsage keyCertSign �� ���������.

ExtendedKeyUsage [OID: 2.5.29.37] ���� ��� ���������� ������������, � � ���������� ����, ��� ������� ����� ���� ����������� �������� ����. �������� ����� ���� ������ ������������ �� ��������� ���� KeyUsage. ��� ����� ���� ����� �� ���������:

serverAuth  (1) TLS-�������������� ������� WWW
      (������������� � digitalSignature, keyEncipherment ��� keyAgreement)
clientAuth  (2) TLS-�������������� ������� WWW
      (������������� � digitalSignature ��� keyAgreement)
codeSigning (3) ���������� ���������� ��� ���������� ������������ ����
      (������������� � digitalSignature)
emailProtection (4)  ������ ����������� �����
      (������������� � digitalSignature, nonRepudiation, 
       �/��� (keyEncipherment ��� keyAgreement))
timeStamping (8) �������� ���� ������� �� �������
      (������������� � digitalSignature �/��� nonRepudiation)
OCSPSigning (9) ���������� ������� OCSP
      (������������� � digitalSignature �/��� nonRepudiation)
Basic Constraints [OID: 2.5.29.19] ���������� ��������, ������������, �������� �� ������ ���������� �������� ������������ (������������ ��) (TRUE) ��� ��� (FALSE). � ���������� ����� ����� �������������� �������������� ������� pathLenConstraint, ������������ ������������ ������� ������� ������������.

cA               TRUE | FALSE
pathLenConstraint   INTEGER
CRL Distribution Points [OID: 2.5.29.31] ��������������, �� ������������� RFC ���������� (�������� ���������). ���������� ���� ��� ��������� URL (� ������ ������������ ����������), �� ������� ����� �������� ������ ������ ������������ (CRL) ��� ��������������� ������, ������������ ������ ���������� (issuer). ������ ������������ CRL, ���������� DistributionPoint (����� ���������������), ����� ��������� ������:

# (O) = OPTIONAL
distributionPoint  DistributionPointName (O)
# points to a structure defined below
reasons            ReasonFlags (O)
cRLIssuer          GeneralNames (O)
# DN �������� CRL, ���� �� �� ��������� � 
# ��������� �����������.
# ������ DN ����� �������������� � ��������� �������� LDAP

# DistributionPointName ����� ���� ����
fullName                  GeneralNames 
# ����� ��������� URI,
# ��������, http://crl.example.com,
# ��� �������� ���������, ��������, HTTP, LDAP, FTP � �.�.
# ������������� ��� ��������� CRL
# ����
nameRelativeToCRLIssuer
# RDN, ����������� � DN �������� ��� ��������� CRL

# ReasonFlags ����� ��������� ���� �� ��������� ��������:
unused                  0
keyCompromise           1
cACompromise            2
affiliationChanged      3
superseded              4
cessationOfOperation    5
certificateHold         6
privilegeWithdrawn      7
aACompromise            8

����������� ������� ���������� �������� �������.

CertificatePolicies [OID: 2.5.29.32] �������������� ����������. ����� ���� ������������ ��� ������������� ���������� ������� ��������������� ������ issuer. ������ ���������� ��������� ��������� ��� OID (� CertPolicyId), ��� � ������ ������������ ��������, �������, �� ��������, �������� (��������� ��) ����������� �����, �� RFC ����������� ������������ ������ OID. OID � ������ ���� ����� ������������ ��� ������������� ����������� EV. �������� ����� ���� ����� �� �����ģ���� ���� ���������:

policyIdentifier   CertPolicyId # OID
policyQualifiers  # ��������� ��������� ��������
                  # ������ ������������ ����� URI �� ��������� 
                  # ��������� �������� ��� ������ �����
subjectAltName [OID: 2.5.29.17] ������ �����ݣ��� ������������ ��� SAN. �������������� ����������, �� RFC 6125 �����������, ����� � ������������ �������� ��� ���� ������ �������������� � � Σ� ����������� ��� ��������, ��� �������� ������� ���������� (�������������� ��� ���, ��� ���� dNSName ����� ���������� ��� ��� � ���� ���������� ��� �������� ����� �������, � � �������� CN= ���� subject ����� ����������� ���������� ������ �������). ���������� ����� ����� ���� ������������ ��� ����������� �������������� ���������, ������������ ��������� ������� ����������� (���� subject �� ������), ���� ��� ������������ ���� subject (���� subject ������, � ���������� subjectAltName �������� ��� CRITICAL). �������� ����� ���� ����� �� �����ģ���� ���� ���������:

otherName                  ���� type=, value=
                           ������� ����� Kerberos (RFC 4556):
                            oid = 1.3.6.1.5.2.2
                            kerberos-principal (IA5String)
                           ���
                           SRVName (RFC 4985):
                            oid = 1.3.6.1.5.5.7.8.7
                            srv-name (IA5String)
rfc822Name                 email me@example.com
dNSName                    DNS-��� host1.example.com
x400Address                �������� ����� X.400,
                           ���� �� � �����, ��� ���
directoryName              �������������� DN
ediPartyName               ��������� EDI
uniformResourceIdentifier  URI ldap://ldap.example.com
iPAddress                  IP V4/V6 192.168.0.1
registeredID               OID

����������� ����������� ���������� �������. ������������� subjectAltName — ���� ������� �������� ���������� �ͣ� DNS � ������ �������. ��������, ���� ������ � ������� �������������� � �������������� https://www.example.com � https://example.com, �� www.example.com ����� �������������� � �������� CN= ���� subject, � example.com ����� �������������� � ���� dNSName ����� ����������, ���, ����, ��� ����� www.example.com � example.com ����� �������������� � ������� dNSName. ����������: � ���� ����� ����� ���� ����� �������� �����, ��������, ����� � www.example.com, � www.example.net. ���������� ������ ����� ��������� ����� �� �����������. �� ��� �������������� ������ ������������ ������������� subjectAltName. ��������� ������� subjectAltName � ��������������� ������������ ���������� OpenSSL — ��������� ���������� �������, �� �������� ������� ��� ����. ��������� �� ����� ����������� subject � subjectAltName.

SignatureAlgorithm �������� (���������������� �� OID), ������������ ��� ���������� �����������, � ����� ��������������� � ��� ���������. ��������, OID �������� ������� RSA � SHA1 (sha1WithRSAEncryption):

1.2.840.113549.1.1.5

��� �������� ������ ��������� � ��������� � ���� signature �����������. ������ �������������� ��� ������������� � ������������� X.509 OID ������̣� � RFC 3279.

SignatureValue ������� ������, ���������� �������� �������.

��� ����, �� ����������� SignatureAlgorithmSignatureValue ������������ � ������� ������ ����������� ASN.1 DER (Distinguished Encoding Rules), ������̣���� � ��������� X.690 ITU-T. �������� ������� ���������� ��� �������������� DER ����, �����, ��������, ����� ����.

��������� �����������, ������������ ��������������� (������������, ������������ ����������� ��� ����������������� ���������) ���������� ����������� �������, � ������� ���������� �������� ��������� ����� ��� ���������, ���� ������������ ����������� ����. �ӣ ����� ���������.

������

��������� �� ����� ����������� subject � subjectAltName

����������� X.509 ������������ � ��������� �����. � ���� ������� ����������� ����������� � �������������� �������, ������������ (����������) ��� ����������� ��������� �������������� ������������.

�������� ��������� ����� �� ������������ X.509

� RFC 6125 ������������ ����� ������, ���� ������� — ��������� �������� ����� ���������, ��������� � ��, ��������� �����������, �� ������� ����, ��� ������� ��������� ��� ��� ����� ���� ������� �������� �������� � ��������� subjectsubjectAltName. (� RFC 6186 ������ ������ ����������� ����� ����������� ����� � ������� ��������� ������� SRV DNS, � � RFC 7817 ������������ ���������� RFC 6125 � ��������� ����������, ��������� � ����������� ������). ����������� �������� �������� ������������ � RDN CN= �������� subject, � ���� ��� �� ��� ��� �������������� (� �������� �� ������������ ������������), � RFC 6125 ���������������� ������� ������������� �������� subjectAltName, ������������ ���������� ������� �������� � �������. RFC 6125 ���������� ������ ����������� ��� �������� �������� �������:

����������: �� ���� ������� ��� ������������� subjectAltName ����� �������������� ����� ������ ���� �����. ����� ����, ����� ���� ���������� ����� ������ �������� ��� ������� ���� �����. �������� ��������, ��������� �� ���� �������������� �����, �������� ������������ �������� ��������� ������� �����������. � ������ ������������� ���� subject �������� ����������� ���������������� ������ �� ������ ��������� ��������, ���������� � RDN CN= (���� � ���� ������ ����� ����� �������������� ������� subjectAltName).

  1. � ���� subjectAltName ���������� ������� ���� dNSName. � ���� ������ ��������� ��� ������������ ����� ��� ��������� ��������, �� �������� ���������������� �������� ������� �����������.

    � RFC 7817 �������, ��� ��� ����������� ����� � �������� ��������� �������� ������� ��������� ���� �������� ����� ������ ����������� ����� (RFC822), � �������, ��� ������ user@example.com �������� ��������� ����� example.com, �/��� � �������� ��������� �������� ����� ���� ������� FQDN �����, ����������� ����������� �����, ��������, mail.example.com.

  2. � ���� subject ���������� ����������� �������� �������� CN, ��������, cn=hostname (����� ����� �������������� ������ RDN, �� ��� �������� ��������� ����� ��� ������������). � ���� ������ hostname ������������ ����� ��� ��������� ��������, �� �������� ���������������� �������� ������� �����������.

    � RFC 7817 �������, ��� ��� ����������� ����� � �������� ��������� �������� ������� ��������� ���� �������� ����� ������ ����������� ����� (RFC822), � �������, ��� ������ user@example.com �������� ��������� ����� example.com, �/��� � �������� ��������� �������� ����� ���� ������� FQDN �����, ����������� ����������� �����, ��������, mail.example.com.

  3. � ���� subjectAltName ���������� ������� ���� otherName, � �������� type ������ �������� otherName ����������� � SRV (oid = 1.3.6.1.5.5.7.8.7) (���������� � RFC 4985).

    � RFC 6186 ������̣� ������� ������������� ��������� ������� DNS SRV ��� ���������� ��������, ��������� � ����������� ������ (������ �������� ��������). ��� ������������ ������������ � RFC 7817.

  4. � ���� subjectaltName ���������� ������� ���� uniformResourceIdentifier. � ���� ������ ��� ������� ������������ ����.

������

������ ������ ������������ (Certificate Revocation Lists, CRL)

������ ������ ������������ (CRL) — �����, � ������� �������� ����������� ����� ���� �������� ����������������� �� ����������� ����, ��������� � ���� NotAfter �����������. ������ CRL ����������� ��� �� ��, ������� �������� � ��� ����������. CRL ����� ���� �������� ���������� ��������, ��������, ����������� LDAP, HTTP ��� FTP. ������ CRL (� ��������� CRLv2, ������� ������) ������̣� � RFC 5280, � ����� �����̣� � RFC 6818.

������������, ��� ��������� ����������� �� �������, ����������� �����������, ���������� ����������, ������ ���������, ��� ���� ���������� ����������� � CRL (�� ��� �������). ����� ������ � �������� ����������� ���������� ��ɣ�� ����������� �����������, ������ ��� ��� ��������� ����������� �� ������� ������ ���� �������� ��������� ������ CRL. ��������� CRL �������� ������ ���� ���������� ������������ ������-���� ��, �� ����� ���� ������������ �������� � ���������, ����� �������, ������������ ������������ ������� ��� �������������� ���������� TLS/SSL. ����� ����, � ����������� �� �������� ��������������� ������, CRL ����� ����������� ������ ���, 12 �����, ��� ���� � �.�. ���� � ���, ��� ���������� ����� CRL, ���� ���� �� ����������� �� ����� � ����� ��� ������ ��������� �����������, �ӣ ����� ����� ��������� ������������ ������.

�� �������� ��������� CRL ������ ��� ��� �������� ����������� ����������� �������� ����� (���� ������ �����������), ������ ������� ���������� �� ���� CRL, ������� ������������ �����������. � RFC 5280 ��� �������� ������� ���������� CRL ������������ ���������� ������ suitably-recent (���������� ������) . ������ ������ ������� ������, ��������� ��� Online Certificate Status Protocol (OCSP), ���������� � RFC 2560, ������������ � RFC 5019 � ��������� � RFC 6277. ������ CRL:

Version �������������� ����. � ����� ������ ��� ���� ����� ��������� �� ������ 2 (CRLv2). ��������� ��������� ���������� � ����, �������� ����� ���� ����� 1. ���� ���� �������, ��������������� ������ 2 (�������� 1).
Signature ��������� ������� ���� ������ ���� ��� �� OID, ��� ������ � ���� SignatureAlgorithm ����.
Issuer DN ��������������� ������, ������������ �, �������������, ��������� ������ CRL. ��� ����� ���� �������� ��� ���������� �������������� �����. �������� ����� �������� ���� issuer �����������.
ThisUpdate ����� � ���� �������� CRL. ������ ���� ����� ���� UTCTime (YYMMDDHHMMSSZ) ��� GeneralizedTime (YYYYMMDDHHMMSSZ). Z � ������� ������������� ������� — ���������� ���������, ����������� �� �������� ������������ �������� ����� Zulu Time (UTC, �� �� ����� �� �������� (GMT)), ��� ţ ���������� ��������������� ��������� �����.
NextUpdate ����� � ���� �������� ���������� CRL. ������ ���� ����� ���� UTCTime (YYMMDDHHMMSSZ) ��� GeneralizedTime (YYYYMMDDHHMMSSZ). Z � ������� ������������� ������� — ���������� ���������, ����������� �� �������� ������������ �������� ����� Zulu Time (UTC, �� �� ����� �� �������� (GMT)), ��� ţ ���������� ��������������� ��������� �����.
RevokedCerticates � CRL ���������� ����������� ���������������� �� �� �������� �������. �������� ������ �� ��������� ���������, �� ������������ �������������� � �������� ������� ������������, ���������� ����� ��, ����� �������, ��� ��������� ������������ ������� ������ ������������ ���������� ��������� ������ � ���� issuer.

userCertificate      CertificateSerialNumber
revocationDate       Time
crlEntryExtensions   Extensions OPTIONAL
Extensions ��������� ���������� CRL ���������� � RFC 3280, �� ���� �� ��� �� �������� ��� ��������� (CRITICAL) � ������ �� ��� ����� �������������� ���� � ������ ��������� CRL, �� ���� CRL, ����������� ��������� �� (�� ��� ��, ������� �������� ���������� ����������).
SignatureAlgorithm �������� (���������������� �� OID), ������������ ��� ���������� �����������, � ����� ��������������� � ��� ���������. ��������, OID �������� ������� RSA � SHA1 (sha1WithRSAEncryption):

1.2.840.113549.1.1.5

��� �������� ������ ��������� � ��������� � ���� signature CRL. ������ �������������� ��� ������������� � ������������� X.509 OID ������̣� � RFC 3279.

SignatureValue ������� ������, ���������� �������� �������.

������

������� ������� — �������������� ������ � ����������� X.509

��� ���� ������� ����, ���������� X.509 �������� ���������� ���������� ��������� ����� ��������, ���������� � ����������� (������ ����������� � �������� CN ���� subject ��� � ���������� subjectAltName). ������� ����������� �� ����� �������� �������� �����������. � ����������� �� ��, ������� ��������� ����������� X.509 ����� ����������� � �������, ��, � ����� ������, �� ������� �� ��������� �����:

  1. ������ (������ �������� ������) ����� � ���� ������� — ��� �������������� ����� (��). �� ��������� ����������� ������������� ���� ������, ��� ��� ���� ��� ��������, ���� ������, ��� ��� ������������� �����-���� ����������. ����� ���������� ������������ � ����� �������������� �� � �������� ������� �������� WebTrust, � ����������� �� ��������� � ������������, ��� ��� ������������ ������� ��������������� ��������� WebTrust (���� � ��������� ����� �ӣ ���� �������� �������� ��������� � ������ ������� ������������� ����������� �������). ��� ���� ��������� �� �������� ������ ����� � �������� ����� �������. � �����-�� ������ ������� �� ���������� ���� ��� ��������� ��� ������������� ������ � � ������� ��������� ����� ��������� ��������������� ���������� (���� issuer � subject ������� ����������� X.509 ��������� � � ���������� BasicConstraints cA ���������� � TRUE). ���� ���������� �������� �������� ������������ ��������������� ������, � �������� ����, ������ � �������� �������� ���� ���������� � �������� �����������, ������������ ��� ���������� ���������������� ������������. �������� ����������� (��� ����������� ��) ���������������� ����� �������� ������������� ����������� ������-���� ����������� ��������, ���� ����� � ������������� ��������.

  2. ������������, �������� �������� ����������, ������������� �������� ��������� �������������� ������� (��) � �������� �������� ���������� ��� ���� ��. ���������� �� (��� ������ �� ��� ������� — ��������������� ������� (��)) �������� ������ �� ���������� ��� ����������� SSL (X.509). � ����������� �� ���� ����������� ������������� � (��� �������) ����������� ��������� ����������, ����� ��� ������������ �������, ��������������� ����� ������� ��� ���� ����������������� ����������. ����� ��, � ����������� �� ���� �����������, ����� ���� ����������� �������������� ������������� ������������. � �������� ��� ��� ���������� ������������ ������ ��������� (���� ������� ����� ���� � ������� ��� ������� ������� ���������������). � ���������� ���� �������� ��������������� ��������� ����� � ���� �������.

    �������������� �����, ��� �� ���� ���������� ����������, ����������� ���������� (���������) ������� � ��� (���������� ��), ��� ������������ �������� ������ ���, �� ���� �� ���� ������. � ������� ��� ������� �������.

  3. ����� ������ �������� SSL, �������������� ����������� ����������������� ���������� � �������� ţ �������������� �������, ������������ ������������ ������������� ����� ������������� ������ � � ������� ��������� ����� ��������� ������ �� ���������� ����������� (Certificate Signing Request, CSR), � �������, ����� ������ ����������, ����� ����������� �������� ���� �� ��������������� ���� ������. ������ CSR ������̣� � RFC 2986 (�������������� ��������� RSA, PKCS#10, �����̣� � RFC 5967) � �������� ��������� ������:

    Version Version 0.
    Subject DN, ������������ ��������, ������� ����� ������������ � ������������. � ����� ������, � ����������� �� ������� ��, ��� ������ ���� �� ��������, ������� ����� �������� � ���� subject ������������� ����������� X.509.
    SubjectPublicKeyInfo �������� ��� ������� (��������): algorithm (OID ��������� ���������� � �������� ������ �� ������, ������̣����� � RFC 3279) � subjectPublicKey (�������� ���� �������� � ���� ������� ������). ������ OID ��������� RSA (rsaEncryption):

    1.2.840.113549.1.1.1
    
    Attributes �������������� ����. ����� ��������� ��������� �������� (���������), ���� ���������� ���������: challengePassword (������ ��� �������������� ������ CSR — ����������� �� ����������, ����� ���� ������� �� �������������) � unstructuredName (����� ���������� ����� — ����� ��, ������ �� �� ������� ��� ������� ��� ����������, ���� ������� �������).
    SignatureAlgorithm �������� (���������������� �� OID), ������������ ��� ���������� CSR, � ����� ��������������� � ��� ���������. ��������, OID �������� ������� RSA � SHA1 (sha1WithRSAEncryption):

    1.2.840.113549.1.1.5
    

    ����������:

    1. CSR ������������� � ������� ��������� ����� �� ���� ��������� � ��������� ������, ��������������� �������� ���� ���������� � ���� SubjectPublicKeyInfo ����� CSR.

    2. ���������� �����������, ������� ����� �������������� � �������� �����������, ����� ����� �����������, ���� ���� ���������� ����� ���������������. ��������� ������������ �� ������������ ����������.

    SignatureValue ������� ������, ���������� �������� �������.

    ��������� �������� CSR ������� �����.

  4. CSR ����������� �� ������ �� (������ �� FTP ��� HTTP). �� ���������� ������ �� CSR �, ��������, ������ ����������, ���������� �� ������ �� ���������� SSL, ��� �������� ����������� X.509 ������������, ������ �� ������ �������� �� 1 �� 3 ���. �������, �� ����������� ���������� ������������ (���� SignatureAlgorithm � SignatureValue) ��������� �������� ����, ������ � �������� �������� ���� ���������� � �������� ����������� ��. ���������� X.509 ��� ��� ���� �������� (FTP/HTTP/EMAIL) ������������ ������������.

  5. ����� �������, ���� ������� ����������� �������� �������� ��������������� ������. �������� ������� ����������������� ����������� ����� ���� �������������� ������ � ������� ��������� ����� �������� (���� issuer), ������� ���������� � �������� ����������� ��, ���������� ��ԣ� ������-���� (�����������) �������� (������ � ������������� ��������).

��� ��������� ��������� ����������� �� ���-����� (�� ����� ��������� ����������� TLS/SSL) ������ ���� �������� ���� ���� ������ �� ��������� ����������� (����������� ��). �� ���� ���� ����� ���� ���� ��� ��������� ������� ������������, � ����������� �� ���������� �����������. �������� ����������� (����������� ��), � ����� �����-���� ����������� ������������� �����������, ������ ���������������� � ������� ������������ ����������� �������� ���������. ���������������� ����� �������� �������� ����������� (����������� ��) ����� ���������� ������� ������� — ������ ����������Σ���� ������, ������������ ��� �������� ����� ������� ��������� ��� ����������, ���������� ��ԣ� ����������� ���������������, � ������� ������� ����� ���������/����������������� ���������� ����������. � RFC 5914 (� ������� � RFC 5937) ����������, ����� ������� ����� ���� ������������, ������������ � ���������� ����� ����� ������� � ���������� ������� ���������� ������������ X.509/SSL.

������

����������� EV

����������� ����������� ��������� (Extended Validation, EV) ���������� CA/Browser Forum � �������� � ���� ��������� ����������� ������� ������������ �������� � ����������� ���������. ���� ������������ EV — ����������� ����������� ������� � �������� �������������, ���� � ���������� ����� ����������, ��� ��� ����������� �� �����������, ��� �������� ����������� ���������� ���������� ������������� (��������) — ������ ��, ��� �������� ������������� ����������.

� ���������, �������������� ����������� EV, ��� ����ݣ���� ���������� ������������ ����� ������� ������ �����, �� ��� ���������� ����������� EV ������ ��������� �������������� ��̣��� ������. � ��������� ������ ����������� EV ������������ ��������� ��������: MSIE (������ 7) � ��������� ������ Konqueror, Firefox (v3+) � Opera(9.5+). ������ ����������� EV ����������� ������, ������ ������ ���� ������������. �������������� ��������� ������� ������������ EV:

  1. �������������� ����� ������ ���� ���������� �� ������������ EV � ������������ ��������� ��������������.

  2. ��� ����������� �������� ������������, ����� ����� �������, ���������, ����� �� ��������, ��� ������������, �������� ������, ������������� �������� ���������� ���� ��������� �����, �������������� �������� �� ��������� ��������!

  3. �������������� ������ ������� ���������, ���������� � RFC 3647, ������� ����� ������ ��������������� (INFORMATIONAL), �� ���� ��� ��������� ����� ��� �� ��������������.

  4. ����������������� ������������� � �������� ��������� ��������� DN � ���� subject, � ����� ����������� ��������� �����. � ���������, ��������� �������� ���������� ��� ��������� (REQUIRED) — ���������� ��������� ����� MUST �� RFC � ���������� EV:

    1. O — organizationalName (OID 2.5.4.10). ������ ����������� �������� ����������� ������������.
    2. businessCategory (OID 2.5.4.15). ����������, ����� ��������� ������������ ����� �������, ����� ���� ������� 5b, 5c ��� 5d.
    3. C — Country — (OID 2.5.4.6), ST — stateOrProvinceName — (OID 2.5.4.8) � L — localityName — (OID 2.5.4.7). �������� ���� ���� ��������� ������ ��������������� ��������� ���������� ������-�������� (� ��, ������, ������������ ���-�������).
    4. serialNumber (OID 2.5.4.5). ��������������� ����� �������.
    5. CN — CommonName — (OID 2.5.4.3). �������� ��� �����, ��������, www.example.com.
  5. ������������ ����������: �������������� EV-��������������� �������� ���������� (24×7) ������������ �������� ������� ������ ����������� EV. ������ ��� ����������� ��ԣ� ������������� Online Certificate Status Protocol (OCSP) (RFC 2560).

  6. ������������ ����������: ����������� EV ����� ���������� ������ ��� �������������� �������� (�� ������� ���� ����), �� ���� � �������� CN= ������ ���� ��� �������, ����� ��� www.example.com ��� mail.example.com.

  7. ������ �������� �� ��, ��� ��� ������ ���������� EV, ������������ ��ԣ� ������������� ������������������� OID (����������� ��� ������� ��) � ���� CertificatePolicies.

������

������� — ��������������� �����������

� ���� ������� �������� ������������� ������ OpenSSL ��� ���������� �����, ��������� � ������������� X.509. ��� ����������� ���� ������� ������ � ������������� �� ���������� ��������� ����, ��� � ����������� ���������� ���������������� �������������. ������ «���������������» ������� ���������� �����������, ��������� � ���� ��� ������������� ��������.

���� ��������� ������, �� ���� ������ �������� ����������, � ������� �������� ����� issuer � subject ���������. � ���� ������ ��� �������� ����������� �������� ����������������. ������ �������� — ��, ����� ������������ ���������� ��� ���� �������������� ������� (��), ��� �������� ������������� ������� ����������� X.509 � ���������� ���������� ��, ����� ��� Verisign ��� Thawte (� ������), ������� ��� �������� ����������� (�� �������� ����������� (����������� ��) ������������������� �� ��������� ������������ ��������� ������������� ������ � �������������, ��������, ����������). ���������� ��������� � ���-����� �� ����� ���� ��������� ����������� TLS/SSL ���������� ������������ (��������� ��������), �������� ����� �� ���������� ���������� ��, ����� ���� �������� (�, �������������, ����������������) ��������� ������ �� ��������������� ������ (��) � �������������� ���� issuer ����������� �����������. ����� ������� �� ������� ��������� �� �������, ������ ���� �������������� �������� ���������� �� (� ����� ����� ������������� �����������). ��� ����������� ������������� ������������ ������������ ������ ����� �������. �������� ����������� ����������� ������������ �� � ������ ������������ �� ���������������� � �������������� � ����������� ������������ ���������, ����� ��� MSIE, Firefox, Opera � �.�.

����� � ���� ������� ��������������� ��������������� ����������� �� ������� �������� ����� ������� — ������������ ���������� ��� ���� �������������� �������. ����� ����� ��������������� ������������ ����� ���� ������������ ���� �� ����� ������������, ���� � ������� �����, ��������, ����� ������������ ����� ������������ �������� ������� � �����-���� ������� ����, �������� ������ ������������� ��� �����-���� ������ ����������. � ���� ������ ��������� �������, ������ ��������������� � ������� ��, ����� ��������������� ��� ������� ��-�� ��������� ����������� ���������� ����� ������������.

����� ����������� ����������� � ���������� TLS/SSL (�������) ������� ��������� ��������������� ���������� � ���������������, ��� � �������� ��� ����� ���������������� ��������� �����������, ����� ������������� ���������, ������������ ������������, ������ �� �� ������� ����������. � ������ �������, ��������������� �������� ���������� ����� ���� �������������� ��� ������������ �� ��������� ������������, � ���� ������ ������� �� ����� ������������ ��������� �� ������.

���������� �� ������ �������� ������������ � �������� ������: ����������� ������������, ��������� � ����������� �����������, ����� ���� �������� �� 1 �� 3 ���. ������, ����������� ������������ �������� ������������, ������������ � ����������, ����� ����� �������� �� 10 �� 20 ���! ��� ������ ��������� � ������������� ���������� ���������� ������ �������� ������������, ����� �� ������������ �� �� ���������� �����������. ������� (2011 ���) ������������ �� ����� ����� RSA, — 2048 ���, — ������������� �� 2030 ���� (���������� ���� ���� �������� ������ ���� ����������� �������� ������������ �������� ����� 2028 ����, ����� �� ����� ������� � ���� ��� ��� ���������� ������� �����, ������ ��� ����� �������� 2048 ��� �� ���������� ���� ����������� � 2030 ����). ������������ RSA �� ���� � ��������� ������ �������� ������. ����������� ������������ �� ������� (2048 ���) � ������ �������� (�� 2030 ����) ������ ����� ���������� � ����������� ���������� 800-57, ����� 1, ������� 2, ������� 4 ������������� ��������� ���������� � ���������� ��� (National Institute of Standards and Technology, US NIST).

����� ��������

� �����ģ���� ����� ������������������� �������� ������������ ������� OpenSSL (������������� � OpenSSL 0.9.8n � 1.0.0e) ��� ��������� ��������������� ������������ X.509, ������� ����� ���� ����������� � ������������ ���������� ��������� TLS/SSL, ������ ��� ���, FTP, LDAP ��� ��������� ��������� (�������� SMTP). ������� OpenSSL ���������� ��������� ����������, � ��� ����� ������ �� ���������, ����� �������� � ���� ������������, �� ����� openssl.cnf (� FreeBSD — /etc/ssl/openssl.cnf), � ���� �� ����������� �������� � ������������� ����أ�, ����� ����������� �, �� ���� �������������, ��������������� ���� ����, ����� ����� ������ ���� �������� ���������� � ��������� ������.

����������: ���� ���أ���� ��������, ��� ������, ���������� ��� �������������� openssl.cnf ��� ��� ������������� � CA.pl (�������� ���������� ����), ����� �������� � ������� ����� �� �����. �������� ��������� ����� ����� ������, ������ ��� �������� ���-���� ������, ����� �� � ����� ������ ������� ������� ���� ������� � �������������� ���������, ���� ���-�� ���ģ� �� ���. �������: �ӣ ��� �� �������, �� ������� �� ���� ����� � ����.

����������� ��� ������ � ������������� ����� ����� ��������� ���� �������� �����, ������� ������ �� ������� ��������� ������, ���� �������� �����, ������� ���������� ������ ��������. ����� �� ��� ���� ������ ��������� � ����� ��������� ��������� ��� ��� — ������� �� ��������� �������� ������������. ������ ����� ������� �� ���������� ���������. ��� � � ����� ������� ����������� ������������, ���������� �������� ��������� �������� ���-���� �������, �� �� ��� ���� ���-��� ����� ��������� ������������� ��������� �������� (Really Useful Methods, RUM™).

���������� �� ������ � FreeBSD: �� ������������������ FreeBSD 8.1 � ��������� openssl �� ��������� (0.9.8n) ����������� ������ CA.pl. ���� �� ����������� ����������� �������� �����, �� ��� ����� ����� � /usr/src/crypto/openssl/apps/CA.pl. ������ ������� — ������������ ������� ������ (/usr/ports/security/openssl), � ����� ��������� make patch (������ ������� � ����������� openssl, �� �� ������������� ���), ����� ���� ����� ������ � ������� find ./ -name «CA.pl». ��������� PERL � FreeBSD ������ �� ��������������� �� ���������, ��� ����� ���������� ��������������.

  1. ����� 1: ������� �������� ��������� ����������� � ����������� �������.

  2. ����� 2: ������� �������� ������� �����������, ������� ����� �������� ������������ � ������������ �������.

  3. ����� 3: �������� ���������� �� � ��������� ������������.

  4. ����� 3A: �������� ��������� ��, ������������� ������������ � �����-������������.

����� 1: �������� ����������, ���������� �������

��������� ���������� ��, �� ���� �������� ����������, ������� ����� ������������� � ������� � ����� ������������, � ����� ���� ���������� �������, ������� ����� ���� ����������� ��������, ��������, Apache. ��� ��������� �������� ������������ ����������� ������ OpenSSL CA.pl (��� ��������� �������� �� ����������� ��� � /etc/ssl, �� �� ���������� ��ϣ ������������).

����������: ��� ��������� ������������, ������� ����� ���� �� ������������ � ����������� ������� �������, ��������, example.com, www.example.com ��� www.example.net ��������� �������, ��������� ����.

# �� ��������� ������������ �������� RSA � ������� 1024 ��� (2011 ���).
# � ��� ��� �������� �������� �� ��������� �������� � ������ 1 ������ 3.
# ������� ���������� � ��������������� �������� ���������� ��:
cd /etc/ssl
./CA.pl -newca
# ������������� ����� ������������������ ��������� ��������� � DN ��.
# �� ��������� �������� ���������� ��������� �
# demoCA/cacert.pem 
# � �������� ���� �� �
# demoCA/private/cakey.pem
# ���� �������� cacert.pem - 3 ����

./CA.pl -newreq
# ������� ������ �� ���������� ����������� (CSR)
# ������������� ������������������ ��������� ��������� � DN �������
# ����� ���� �������� �������� CN (CommonName),
# ��� ������� ������� ��� ���-������� ��� ������� �������,
# ��������, www.example.com, ldap.example.com ��� mail.example.com

./CA.pl -sign
# ����������� CSR � ��������� ���������� �
# /usr/local/openssl/newcert.pem
# ���� �������� newcert.pem - 1 ���.
# �������� ���� �
# /usr/local/openssl/newkey.pem

# ������� ��������� ����� �� newkey.pem
# ����� ������ �� ���������� ������ ��� ��������
openssl rsa -in newkey.pem -out keyout.pem

# ��������: ���� ���� �������� �������� ����, � ����� ������ �� ������
# ������ ���� ������ � ��������� ����� �����

# ����������� � ������������ ����� �������� ����������� �������.
# ���������� ��� ����� newcert.pem � keyout.pem.
# ������ ��� apache:
SSLCertificateFile /path/to/newcert.pem
SSLCertificateKeyFile /path/to/keyout.pem
# ������ ��� OpenLDAP:
TLSCACertificateFile /path/to/cacert.pem
TLSCertificateFile /path/to/newcert.pem
TLSCertificateKeyFile /path/to/keyout.pem

�������������� ��������� � ���������� �������� �����. ���� demoCA/cacert.pem, ���������� �������� ������������, ����� ���� ���������� � ������������ � �������.

����� 2: ������ ���������� �������

��� ����� ������� (� ���� �������) ���� �������� ����������� X.509, ������� ����� ����� ������������ � ��� ���������� �������, � ��� �������� ���������� (���������� ��). ��������� ���� ���������� ��������������� (� ������������ ���� CA:True), �� ����� ���� ������������ � ������� ��� ������ ���������� �� ��� �������� ���������� (���������� ��). ������������� ������������������ ��������� ��������� � DN ���� �������, ��� �������� ������������ ����������. � ���������, ������� CN ������ ���������� ��� ����� �������, ����� ��� www.example.com, � �� ��� ����� ����������. �� ����, ���� ���-������ ����� ����� https://www.example.com, � ����������� �� ����� webserver.example.com, ������� ������������ CN=www.example.com. ����� ������� ����������� ������ OpenSSL, �������� #�����̣����_�������_��ۣ���# ������ ���� �������� �� ���������, ��������, #���_�������# ������� �������� �� �������������� ��� �������, ������� �������� ��������������, ������, www.exmple.com ��� ldap.example.com.

����������: ��� ��������� ������������, ������� ����� ���� �� ������������ � ����������� ������� �������, ��������, example.com, www.example.com ��� www.example.net ��������� �������, ��������� ����.

cd /etc/ssl
openssl req -x509 -nodes -days 1059 -newkey rsa:2048 \
 -keyout testkey.pem -out testcert.pem

Generating a 2048 bit RSA private key
.....++++++
..................++++++
writing new private key to 'testkey.pem'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:#���_�����_������#
State or Province Name (full name) [Some-State]:#��������_������_��������_������#
Locality Name (eg, city) []:#��������_������_������#
Organization Name (eg, company) [Internet Widgets Pty Ltd]:#��������_�����_�����������#
Organizational Unit Name (eg, section) []:#��������������_����#
Common Name (eg, YOUR name) []:#���_�������#
Email Address []:.

# ������� ���������� testcert.pem
# � ��������������� �������� ���� testkey.pem
# �������� ���������� ���������� ���� �����
# ������ �� ������ ������ ���������:
# chown user:group testkey.pem
# chmod 0400 testkey.pem

# ����������� � ������������ ����� �������� ����������� �������.
# ���������� ��� ����� testcert.pem � testkey.pem.
# ������ ��� apache:
SSLCertificateFile /path/to/testcert.pem
SSLCertificateKeyFile /path/to/testkey.pem
# ������ ��� TLS-������� OpenLDAP (slapd.conf)
TLSCertificateFile /path/to/testcert.pem
TLSCertificateKeyFile /path/to/testkey.pem
# ������ ��� TLS-������� OpenLDAP (ldap.conf)
TLS_CACERT /path/to/testcert.pem

����������: �������� -x509 ������������ ��� �������� ���������������� ����������� ��. -nodes ��������� ������ ������� ��������� �����. -days 1059 ������������� ���� �������� �����������: 2 ���� 329 ����.

<���> �������� ����� �������� ��������, ����� ��������������� �������� ����� ������������� ��������� ���������� ������ �������� 2 ���� 329 ����? ���� ���� ��� �������. ��-������, ���� ����� ��� �������, �� ������ �� � ���? ��-������, ������������ �������� ����� ��������, ��� 3 ���� ���������� 1095 ���� � �� 1059, ������� ���� ������������ � ������. ���� ������, ��� �������������� ������� ������ �� ���������� 5 � 9 (�� ��������� ���, ������� ������ ��� �������� — ������� ����) � ������ ����, ����� ������������� ����� � 1095 �����, �� �������� 1059 � ��������� ��� ������ �������. �������, ��������� ��������������, ��� ������� ������������ �� ������� ������ � 2048 ���� ����� ������������� �� 2030 ����, ����� ������ ������� ������ ��� �������� � -days 6205 (�� ��������� �� 2013 ���): 17 ��� � �ޣ��� ���������� ���.</���>

����� 3: �������� ���������� �� � ��������� ������������

���� �� ����������� ������������ ��������� ������������, ������, ��� ������������� �� ���������� �������, ����� ����� ��������� ��������� ����� � ������. �� ��������� ��������� ������� � ����, �� ��� ������, ����� �������. � � ������������ ����������� ������ CA.pl ��� �������� ��������������� ������, ��� ���� ���������������� ��������� ���������� � ������, ������� ����� ������������� ��������� ������ ��������, � ����� ������������ ������� openssl ��� ��������� CSR � ���������� ������������, ��������� ����� �������� ����������� ������� �������� ��� ����������� � (������������) ������� ������� �������.

  1. ���������� � ��������������� ����������. �������������� ����, ����������� �������� ������ ���������� � ��������� ������. ������, ��� �� ����������� ��������� ���� ����������� ������������. ��� ����������� �� �������� ��� � /etc/ssl, � ��� ���������� ����� �������������� ����� �� ������. �������� ��� � ������������ � ������ �������������. ����������� ������ CA.pl (���� �� �� ������ ��� �����, ����������� locate CA.pl) � /etc/ssl/CA.pl ���� ����, ��� �� ����������� ��������� ����������� ������������. �� ����� ������������� ���� ������ � ca.pl ��-�� ��������������� ���������� � ������� shift, �� ���� �� �� ���������� ����� ��������, ������ ����������� CA.pl � ��������.

    ����� ca.pl (��� CA.pl) � /etc/ssl/openssl.cnf ��������� ������������ ������� �� ������ ��� ������ �������, ��� � ������� openssl. �������ģ���� ���� ��������� �������� ����, ��� �������� � ����� CA.pl (ca.pl) ��������� ������ ����Σ���� ������:

    # ��������������: ������� ������� � ������� ����� �������������� ������
    #    CA.pl � openssl.cnf ������ ��� ������� �����-���� ���������
    # ���� �������� ��������� ����������� - 10 ���, ������ ���������� ������,
    # �� ����������� ������������� �� ������������� �������� �����������,
    # �������������� �� 2028
    $CADAYS="-days 3650";	# 10 ���
    # �� ��������� $CADAYS="-days 1059";	# 3 ����
    
    # �������� ���������� ��
    $CATOP="./ca";
    # �� ��������� $CATOP="./demoCA";
    # ��� ��������� ���� ���������� ��������� ��������������� ��������� � openssl.cnf
    

    ����� ��������� ���� �����, �� ������� ��������� ��������� � /etc/ssl/openssl.cnf (����� ��, ��������� ������ �������� ������):

    # ��������������: ������� ������� � ������� ����� �������������� ������
    #    CA.pl � openssl.cnf ������ ��� ������� �����-���� ���������
    [ CA_default ]
    # ��������� ���������� ��� � ca.pl
    dir = ./ca         # ��� ����� �ӣ
    # dir = ./demoCA   # �� ���������
    
    # �������� ����������� ����������: ����������� � �������������
    copy_extensions = copy
    # ���������������� ��� ��������� ���� ��������� ���������� ��� ���������� �ͣ� DNS,
    # ����� �������� ������������������ (�� ���������)
    
    # ���� �������� ����������� ����� �� 3 ����.
    # ����� �������� ����� -days
    default_days	= 1059 # 3 ����
    # �� ��������� default_days	= 365 # 1 ���
    
    [ policy_match ]
    # ���������� ���� ������ � ���������� ������
    # �����ģ� � ���������� �������� L= � DN issuer � subject,
    # � ��������� ������ ���� ������� ����� ������ - �� ��� �����
    localityName		= optional
    
    [req]
    default_bits = 2048 # ������� ������������ �� 2011-2030 ����
    # default_bits = 1024 # �������� � ������������ �����
    
    [ req_distinguished_name ]
    # ����� ������ �������� ���������� ���������� �������� _default.
    # �������������� ��� �������� � ������ �����
    countryName_default		= MY 
    stateOrProvinceName_default	= STATE
    localityName_default		= CITY
    0.organizationName_default	= ONE INC
    organizationalUnitName_default	= IT
    
    

    ����� ��������� ��� ��������� �������� ����� ����� — ����� �� �������� ���-�� ��������.

  2. �������� ��������������� ������. ������ ������� ������� �������� ���������� ��������������� ������ (��) � ��������� ������ ��������� �����. ��������� ���� ������ — �������� � ��������. �������� ���� ������������ � �������� ���������� /etc/ssl/ca/cacert.pem, �������� ���� — � /etc/ssl/ca/private/cakey.pem. ������ ����� �� ��������� — PEM. ������������� ������ DN ����� ������������ ��� ������������ ����� issuer � subject ����� ��������� �����������, � ����� ��� ���� issuer ���� ����������� ����������� ������������, ������� �� � ������������ �� ������ ������������. ��������� ����� �����������, ��� ��������������� ��� ������ ��������� ����� � ����� ������������� ��� ���� ����������� ����������� ������������, ��� ��� ţ ����� ���������:

    cd /etc/ssl
    ./ca.pl -newca
    
    CA certificate filename (or enter to create) #ENTER
    
    Making CA certificate ...
    Generating a 2048 bit RSA private key
    .....++++++
    ..................++++++
    writing new private key to './ca/private/cakey.pem'
    Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [MY]:
    State or Province Name (full name) [STATE]:
    Locality Name (eg, city) [CITY]:
    Organization Name (eg, company) [ONE INC]:CA COMPANY NAME
    Organizational Unit Name (eg, section) [IT]:X.509
    Common Name (eg, YOUR name) []:CA ROOT
    Email Address []:.
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    Using configuration from /etc/ssl/openssl.cnf
    Enter pass phrase for ./ca/private/cakey.pem:
    Check that the request matches the signature
    Signature ok
    Certificate Details:
      Serial Number:
         bb:7c:54:9b:75:7b:28:9c
      Validity
         Not Before: Apr 15 21:07:36 2008 GMT
         Not After : Apr 13 21:07:36 2018 GMT
      Subject:
         countryName               = MY
         stateOrProvinceName       = STATE
         organizationName          = CA COMPANY NAME
         localityName              = CITY
         organizationalUnitName    = X.509
         commonName                = CA ROOT
      X509v3 extensions:
       X509v3 Subject Key Identifier: 
        54:0D:DE:E3:37:23:FF...
       X509v3 Authority Key Identifier: 
        keyid:54:0D:DE:E3:37...
        DirName:/C=MY/ST=STATE/O=CA COMPANY NAME/L=CITY/OU=X.509/CN=CA ROOT
        serial:BB:7C:54:9B:75:7B:28:9C
       X509v3 Basic Constraints: 
        CA:TRUE
    Certificate is to be certified until Apr 13 21:07:36 2018 GMT (3650 days)
    
    Write out database with 1 new entries
    Data Base Updated
    

    ����������: � �����ģ���� ������� ������, ���� ��� ������ ��� ��������� ���������, ���� �������� ��� ���� ��������� (����� ��������� ���������� ������������).

    ��������� ����������� ��������� ����������:

    ca                   # cacert.pem (�������� ����������)
                         # serial (������������ �������� �������)
                         # crlnumber (�������� ������ CRL)
                         # index.txt 
    ca/private/cakey.pem # �������� ���� ��
    ca/newcerts          # ����� ���� ��������� ������������
    ca/crl               # ������������ ����� ���������� ��������� CRL
    ca/certs             # ������������ ����� ���������� ��������� ������������
    

    ���� �������� ���������� ��������� ����������� (ca/cacert.pem) — 10 ��� (3650 ����) �������� ������������������ �������� � ����� ca.pl. ��������������� �������� ���� (ca/private/cakey.pem) ����ݣ� ��������� ������ PEM, �� �ӣ ����� ��� ������� �������� ���������� ���������� ��������� ���� ������� (����������� �� ��������� ����� 0644 ������������ ������). ������������� Challenge Password — ������� ������, ������� ����� ���� ����������� ��� ������ ������� � ������������, CSR � ����������� ������������ X.509. ����������� (���� �� ���) ������������ �������������� ������ �� ������������ ��������� ����� ������ � �������������� ������������� �������� �������� (Optional Company Name), � �� ���� �������� ��� ���� ����������� �������������. ���� �� ������ ��������� ������ ���� ��������, �������������� /etc/ssl/openssl.cnf:

    [ req_attributes ]
    # ��������������� ��������� ������
    #challengePassword		= A challenge password
    #challengePassword_min		= 4
    #challengePassword_max		= 20
    
    #unstructuredName		= An optional company name
    
  3. �������� ������� �� ���������� ����������� (CSR). ������������� � ���� ������ �������� DN ����� ���������� � ���� subject ��������� �����������.

    ��� ������� ����� �������������� � ��� �������� ������� CSR (Certificate Signing Request) � ������������ ��, � ��������� ����������� �� �� ������������ �������, ������ ������� ENTER ��� ������� A challenge password (� ���, ��� ������ ��������� ��� ������� �������� ����). ������������ �������� emailAddress ����� �������� ������, ������� ������� ������, ��� ��� ����������� ������� ��� �� ����� �������� ��������, � ����� ������, ��� � ����������� �������� � ������������ �� ��� �� �����������.

    openssl req -nodes -new -newkey rsa:2048 \ 
    -keyout ca/private/cert1key.pem -out ca/certs/cert1csr.pem
    
    Generating a 2048 bit RSA private key
    ...................++++++
    ............++++++
    writing new private key to 'ca/private/cert1key.pem'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [MY]:
    State or Province Name (full name) [STATE]:
    Locality Name (eg, city) [CITY]:
    Organization Name (eg, company) [ONE INC]:
    Organizational Unit Name (eg, section) [IT]:
    Common Name (eg, YOUR name) []:www.example.com
    Email Address []:.
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    

    ��� ������� ������� ����� ������ �� ���������� ����������� (� /etc/ssl/ca/certs/cert1csr.pem), ������� ����� ������ ���� �������� � ������� ��������� ����� ��, � �������� ���� (�������, �� �ޣ� ������������� ��������� -nodes, �� ����� ����ݣ� ��������� ������ — ���� �� ����� ������������ ��� � ��������� ����������) � /etc/ssl/ca/private/cert1key.pem. �������� CN (� ������� — www.example.com) — ��� ������������ ����������� ��� �������. ��� ����� �� ���� ldap.example.com, ���� ����� ������ ���������� ������. ������ ����� �����, ��� ����� ���������� ��������� ��� ������� �� https://www.example.com, �� ���� ��� ������� � ���� �� ������� ������������ https://example.com, �� ��� ����� ��������� CSR ����� ����������� �������� ������� ����������� subjectAltName � ������� ��������� ���� ��������� (� ������������ � ������ VirtualHost �������� Apache ��������� ServerAlias). ��� ������� �� ������� ������ ������ ����� �������. ���, ���� � ���-������� ���������� ��� � https://www.example.com, � �� ����������� �� ����� webserver.example.com, � CN ����� ������������ www.example.com.

  4. ��� ��������� ������� ����������� ���������:

    openssl req -in ca/certs/cert1csr.pem - noout -text
    
    Certificate Request:
     Data:
      Version: 0 (0x0)
      Subject: C=MY, ST=STATE, L=CITY, O=ONE INC, OU=IT, CN=www.example.com
      Subject Public Key Info:
      Public Key Algorithm: rsaEncryption
      RSA Public Key: (1024 bit)
       Modulus (1024 bit):
        00:ae:19:86:44:3c:dd...
        ...
        99:20:b8:f7:c0:9c:e8...
        38:c8:52:97:cc:76:c9...
       Exponent: 65537 (0x10001)
       Attributes:
         a0:00
     Signature Algorithm: sha1WithRSAEncryption
      79:f5:20:45:6c:ec:8e:ae...
      ...
      bd:61:cd:c5:89:7c:e0:0d...
      40:7d
    

    ����������: � �����ģ���� ������� ������, ���� ��� ������ ��� ��������� ���������, ���� �������� ��� ���� ��������� (����� ��������� ���������� ������������).

  5. �������� � ���������� ����������� ��������� ������������. ��� ������� ��������� �� ����� CSR (ca/certs/cert1csr.pem) � ������� ���������� ��������� ������������ (��������� ��������) (ca/certs/cert1.pem):

    openssl ca -policy policy_anything \
    -in ca/certs/cert1csr.pem -out ca/certs/cert1.pem
    
    Using configuration from /usr/local/openssl/openssl.cnf
    Enter pass phrase for ./ca/private/cakey.pem:
    Check that the request matches the signature
    Signature ok
    Certificate Details:
      Serial Number:
        bb:7c:54:9b:75:7b:28:9d
      Validity
        Not Before: Apr 15 22:21:10 2008 GMT
        Not After : Mar 10 22:21:10 2011 GMT
      Subject:
        countryName               = MY
        stateOrProvinceName       = STATE
        localityName              = CITY
        organizationName          = ONE INC
        organizationalUnitName    = IT
        commonName                = www.example.com
     X509v3 extensions:
      X509v3 Basic Constraints: 
       CA:FALSE
      Netscape Comment: 
       OpenSSL Generated Certificate
      X509v3 Subject Key Identifier: 
       EE:D9:4A:74:03:AC:FB:2C...
      X509v3 Authority Key Identifier: 
       keyid:54:0D:DE:E3:37:23...
    
    Certificate is to be certified until Mar 10 22:21:10 2011 GMT (1059 days)
    Sign the certificate? [y/n]:y
    
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
    

    ����������: � �����ģ���� ������� ������, ���� ��� ������ ��� ��������� ���������, ���� �������� ��� ���� ��������� (����� ��������� ���������� ������������).

    ���� issuer ����������� � ���������� ����������� ����������� �� ���� subject ��������� ����������� (ca/cacert.pem), � ���� subject ������ ����������� — �� CSR. ������ �������� �� ��������� ������� ��ң� �� openssl.cnf: ���� �������� (default_days =), ���� ���������� (private_key =) � DN �������� �� ��������� ����������� (certificate =). � ����������� �� ���������� ����� ������� �������� -policy policy_anything ����� ���� ������������. �� ��������� �� ������̣���� � ����� openssl.cnf ������ policy_anything, ������� ��������� �������� � DN ���� subject ����������� �������� ���������, �������� �� ��������������� ��������� � DN ���� issuer. ��� ���������� ����� ��������� �� ��������� ������������ -policy policy_match, ������������� ����������� �� �������� RDN C=, ST= � O=.

    ��� ��������� ����������� � ���������� ����������� ���������:

    openssl x509 -in ca/certs/cert1.pem -noout -text
    
    Certificate:
     Data:
      Version: 3 (0x2)
      Serial Number:
       bb:7c:54:9b:75:7b:28:9d
      Signature Algorithm: sha1WithRSAEncryption
      Issuer: C=MY, ST=STATE, O=CA COMPANY NAME, L=CITY, OU=X.509, CN=CA ROOT
      Validity
       Not Before: Apr 15 22:21:10 2008 GMT
       Not After : Mar 10 22:21:10 2011 GMT
      Subject: C=MY, ST=STATE, L=CITY, O=ONE INC, OU=IT, CN=www.example.com
      Subject Public Key Info:
       Public Key Algorithm: rsaEncryption
       RSA Public Key: (1024 bit)
        Modulus (1024 bit):
         00:ae:19:86:44:3c:dd...
         ...
         99:20:b8:f7:c0:9c:e8...
         38:c8:52:97:cc:76:c9...
        Exponent: 65537 (0x10001)
     X509v3 extensions:
      X509v3 Basic Constraints: 
       CA:FALSE
      Netscape Comment: 
       OpenSSL Generated Certificate
      X509v3 Subject Key Identifier: 
       EE:D9:4A:74:03:AC:FB:2C...
      X509v3 Authority Key Identifier: 
       keyid:54:0D:DE:E3:37:23...
    
     Signature Algorithm: sha1WithRSAEncryption
      52:3d:bc:bd:3f:50:92...
      ...
      51:35:49:8d:c3:9a:bb...
      b8:74
    

    ����������: � �����ģ���� ������� ������, ���� ��� ������ ��� ��������� ���������, ���� �������� ��� ���� ��������� (����� ��������� ���������� ������������, ������� � �������� �������� � ���� ������ ���� �� �����).

    �������� �������

    �������� � �������� ������������. ����� ��������� ������������ � ��������� ����������� ������. ����� ��������� � ����������� ������������, ����������� ����� �������:

    openssl x509 -in certificate-name.pem -noout -text 
    # ���������� ���������� �������
    
    openssl x509 -in certificate-name.pem -noout -dates
    # ������� ������ ���� ������ � ��������� ����� �������� 
    
    openssl x509 -in certificate-name.pem -noout -purpose
    # ������� ������ ���� ��������� ����� ���������� �����������
    
    openssl x509 -in certificate-name.pem -noout -purpose - dates
    # ������� ���� �������� � ���� ���������� �����������
    
  6. ������ ���������������� ��������� �����������. ��������� �� ����� 2 ���� � ������� PEM (ca/cacert.pem) ����� ���� ������������ ��������������� � MSIE � Firefox, ����� ��� �� �������� ������� � ������������ ������������. ��������� ������� ������� ����.

����� 3A: �������� ��������� ��, ������������� ������������ � �����-������������

� ������ 3 ��������� ������� ������� �� ���� ������������: ����������� ��������� �������� (�������) � ��������� ����������� ��. � ������ 3A ������������ ������������ ����, ��� ����� �������� � ���� ��������� (�� ��� ��� ���� ��������). �� �������� ��������� ��, ��������, ������ �������� ��, � �����, ����������� �� ���� ���������, �������� ������������ �����-����������� � ������������� �����������.

  1. �������� ���������: ��������� ����� 1 � 2 ������ 3. ��������� ������ ��������� ���������� � ��� ������ �������� ��. ���� �� ��� ������ ��� ����� ������ 3, �� �� ���� �� �ͣ� ������, ����������� ����� �� ����� ������������� � ��� ����������, ��� ��� �� ������ �� ��������� � ���� ������� �� ���������. �� ���������� ����� �������� ����� ������� ��������� ���������� � �����:

    ca                   # cacert.pem (�������� ����������)
                         # serial (������������ �������� �������)
                         # crlnumber (�������� ������ CRL)
                         # index.txt 
    ca/private/cakey.pem # �������� ���� ��
    ca/newcerts          # ����� ���� ��������� ������������
    ca/crl               # ������������ ����� ���������� ��������� CRL
    ca/certs             # ������������ ����� ���������� ��������� ������������
    

    ��������� �� ���������: ������� openssl ��ң� ������ �� ����� ����������� ���������� �� ����������������� ����� (openssl.cnf). �� ����� ������� �� ������������, ��� ��������� ����� ����������� ������ � ���� ����������� �����, ��������� �� ������ ������������ ��� ���������� ���� ����� ������. �� ��� ������� ������ ����� ������ �� �����ģ�. ������ ����� �� ����������� ����������� ����������� ���������������� ���� (openssl.cnf), ���� ����� ������ ����� ���������� ��� (������� ����� ���������) � ������������ �������� -config filename ��� ������, � ����������� �� ������, ���������������� ����������������� �����. ��� ��������� �������� ������� (�� ��������), �� �������� (�� ��������) � ������������ ������������ �������� (����������).

  2. ������� ��������� ��:

    ������� ����� ����������, ������, subca � subca/private (� ���� �� �������, ��� � ca/private). ���� ��� ������ �������� ������������ ������� (� ��ϣ� ����):

    cd /etc/ssl
    mkdir ca/subca
    mkdir ca/subca/private
    # ������� ����������� ������ ���� ���� ������ ��� �������� subca
    touch ca/subca/index.txt
    

    ����������� openssl.cnf, ������� ������ [ sub_ca ], ��� ����� ���������� � ����� ����� �����, �� ��� ������̣������ �������� ţ ����� ������� [ user_certs ]. ��������� ��������� � ���� ������ ����� �������������� ��� ��������������� ������� ����������, ������������ ��� ���������� �����������.

    # ����� ������
    [ sub_ca ]
    basicConstraints=CA:TRUE
    # ������ �������:
    # basicConstraints= CA:TRUE,pathlen:0
    # pathlen:0 ������������ subCA, ����� �� ���
    # ����������� ������ ����������� �������� ���������
    
    # �������������� ������ ��������� �����������
    # nsComment="Most Trusted Certificate in the World"
    nsComment="OpenSSL Generated Certificate"
    # ��������� ��� ��������� - ������� ��� ���� ���������� ������������
    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid,issuer
    
    # ��������� ������ ���� ������������� ������� ������ sub_ca � �����
    [ user_cert ]
    
  3. ������� ���������� ���������� ��:

    ������� CSR ��� ���������� �� � ����������� ��� � �������������� ��������� ����������� ��:

    # ����������: �� ���� ������ ������������ �������� ��, ��������� �� ������ 1 � 2 ������ 3.
    
    # ������� CSR ��� ���������� ��
    openssl req -new -keyout ca/subca/private/subca1key.pem \
      -out ca/subca/subca1csr.pem
    Generating a 2048 bit RSA private key
    ...................++++++
    ............++++++
    writing new private key to 'ca/subca/private/subca1key.pem'
    Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [MY]:
    State or Province Name (full name) [Some-State]:
    Locality Name (eg, city) [Some City]:
    Organization Name (eg, company) [My Company Name]:
    Organizational Unit Name (eg, section) []:Certs
    Common Name (eg, YOUR name) []:subCA1
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    
    # ����������:
    # 1. �������� Organizational Unit �� ��� �����, ��ӣ� ������ ������������ ��������.
    # 2. �������� Common Name - ��� (��������), ������ ���������� ��. 
    
    # ������ �������� ���� ������ � �������������� ����� ��������� ��.
    # ��� ��������� ������̣���� ���� ���������� ���������� -extensions sub_ca.
    openssl ca -policy policy_anything -in ca/subca/subca1csr.pem \
      -out ca/subca/subca1cert.pem -extensions sub_ca
    	
    # ������� ���������� ����������:
    openssl x509 -in ca/subca/subca1cert.pem -noout -text
    Certificate:
     Data:
      Version: 3 (0x2)
      Serial Number:
         c6:bd:b2:ce:22:bc:4d:57
      Signature Algorithm: sha1WithRSAEncryption
      Issuer: C=MY, ST=Some-State, O=My company name, OU=Certs, CN=Root CA1
      Validity
       Not Before: Dec 9 20:40:18 2011 GMT
       Not After : Dec 6 20:40:18 2021 GMT
      Subject: C=MY, ST=Some-State, L=Some City, O=My company name, OU=Certs, CN=subCA1
      Subject Public Key Info:
       Public Key Algorithm: rsaEncryption
       RSA Public Key: (2048 bit)
        Modulus (2048 bit):
         00:a9:f3:02:01:c9...
         01:b6:27:c8:a0:9c...
         ...               
         f0:37:71:5d:e3:c7:3d:59:ff...
         55:87
        Exponent: 65537 (0x10001)
       X509v3 extensions:
        X509v3 Basic Constraints: 
         CA:TRUE
        X509v3 Key Usage: 
         Certificate Sign, CRL Sign
        Netscape Comment: 
         OpenSSL Generated Certificate
        X509v3 Subject Key Identifier: 
         58:47:30:77:3F:EF...
        X509v3 Authority Key Identifier: 
         keyid:FB:7B:FB:7B...
    
     Signature Algorithm: sha1WithRSAEncryption
      43:b5:e2:8d:4d:07:56...
      ...
      12:2c:a2:7c:eb:dc:45...
      e0:f3:2b:72
    

    ����������: � �����ģ���� ������� ������, ���� ��� ������ ��� ��������� ���������, ���� �������� ��� ���� ��������� (����� ��������� ���������� ������������).

    ������ ���������� X509v3 extensions, — ��������� ������������� ��������� -extensions sub_ca, — �������������� ������� �������������� �����������. ���� �� ��������� �� ��������� ��������� ������� ���������� ��������� ��������, ������ �������� ���� ��������. ����������, ������������ � ���������� ���������� (ca/subca/subca1cert.pem) — ��� �����-����������, ��������� � ���������� ����������, � ���������� �������� ����� ���� basicConstraints, � ������� cA ����������� � True.

  4. ���������� ����������� ��������� �������� ��������� ��:

    ����� ��������� ���������� ��������� �������� � �������������� ����� �����Σ����� ��, ��� ������� ����� ����������� ���� openssl.cnf � ������������� ���, ������, � subca1.cnf. ������ ���ӣ� ��������� � subca1.cnf (��� ��������� ������ ������� openssl ��� ����� ��������� �����, ����������� � subCA, ����� ��� ����������� ���� openssl.cnf ��������� ��������� �� ���������� � �������� ��):

    [ CA_default ]
    # �������� ������ �� ��������, ������� ���� ��������.
    database	= $dir/subca/index.txt	# ��������� ���� ���� ������.
    certificate	= $dir/subca/subca1cert.pem 	# ���������� subCA
    # ��������� �������� ������� � ���, ��� ����������� �� ����� �������
    # (��������� � ����������) ����� ����� �������� (������) ���������.
    # ����� �������� ���, ���������� ca/serial � ca/subca/serial
    # � ������������� ��������.
    serial		= $dir/serial 		# ������� �������� �����
    # ��� ��������� ��������, ���� ����� ����������� ��������� CRL,
    # � ��������� ������ �������� �� ��� ���������
    crl_dir		= $dir/subca/crl        # ����������������� ����������� crl
    crlnumber	= $dir/subca/crlnumber	# ������� ����� crl
    
    # ���������������, ���� ����������� ������������ CRL V1
    crl		= $dir/subca/crl.pem 		# ������� CRL
    
    private_key=$dir/subca/private/subca1key.pem # �������� ���� subCA
    RANDFILE	= $dir/subca/private/.rand	# �������� ���� �� ��������� ������
    

    ������ �������� CSR �� ���������� ��������� �������� � �������� ��� ������ subCA:

    # ������� CSR:
    openssl req -new -nodes -keyout ca/private/user1key.pem \
      -out ca/certs/user1csr.pem
    # ����������� ��� ������ subCA � �������������� -config subca1.cnf:
    openssl ca -policy policy_anything -in ca/certs/user1csr.pem \
      -out ca/certs/user1cert.pem -config subca1.cnf
    # ������� ������������ ����������:
    openssl x509 -in ca/certs/user1cert.pem -noout -text
    Certificate:
     Data:
      Version: 3 (0x2)
      Serial Number:
       c6:bd:b2:ce:22:bc:4d:58
      Signature Algorithm: sha1WithRSAEncryption
      Issuer: C=MY, ST=Some-State, L=Some City, O=My company name, OU=Certs, CN=subCA1
      Validity
        Not Before: Dec 9 21:06:43 2011 GMT
        Not After : Dec 6 21:06:43 2021 GMT
      Subject: C=MY, ST=Some-State, L=Some City, O=My company name, OU=Server, CN=www.example.com
      Subject Public Key Info:
      Public Key Algorithm: rsaEncryption
       RSA Public Key: (2048 bit)
        Modulus (2048 bit):
         00:c3:f4:dc:07:08:30:3a...
         ...
         a8:45:fd:c5:d7:a4:04:82...
         af:dd
        Exponent: 65537 (0x10001)
      X509v3 extensions:
       X509v3 Basic Constraints: 
        CA:FALSE
       Netscape Comment: 
        OpenSSL Generated Certificate
       X509v3 Subject Key Identifier: 
        B1:5A:23:4E:C8:2B:FD:98...
       X509v3 Authority Key Identifier: 
        keyid:58:47:30:77:3F:EF...
    
     Signature Algorithm: sha1WithRSAEncryption
      50:4b:8e:50:8f:fa:f4:98...
      ...
      3d:97:52:28:1f:a6:9d:2e...
      ac:58:be:eb
    

    ����������: � �����ģ���� ������� ������, ���� ��� ������ ��� ��������� ���������, ���� �������� ��� ���� ��������� (����� ��������� ���������� ������������).

    � ������ ������ �������� ����������� — subCA1, � �� root CA1, ��� ���� ��� ���������� ������� �� �������� ����������� �����Σ����� ��. ����� ��������� �������� ����������� ����������� ��������� �������� �� ���� �������, � ������� ������ ���� ������������� ��� �����������: ��������� �� (ca/cacert.pem) � �����Σ����� �� (ca/subca/subca1cert.pem).

  5. ������ �����������:

    ��������� �������� �������, ����� ������� ������ �������� �� (root CA2), ��� ����, �������� ����, ����������� �ݣ ���� ����� openssl.cnf, ���� ������ �����Σ���� �� (subCA2), ����� ��, � ���������� ���������������� ������. ������, ����� ������…

����������� � ����������� ������� �������

���� ���������� ������������ ��� ������������� �� �����, � �������� ������ ������ ����� DNS, ������, https://www.example.com, https://example.com ��� ���� www.example.net, �� ��� ����� ������� ������������� �������� ����������� subjectAltName � ������� �� ���������� ����������� (CSR). ����� ��� �������, �������������� ���� openssl.cnf ��� �������� ���� (��������� ������ �������� ������):

# ������� ������� ������ [CA_Default]
[CA_Default]
....
# ���������������� ��� ��������
copy_extensions = copy
# ��� �������� ������� ca ����������� ���� ���������� �� CSR.
# ��� ����������� ������� ���������� �� �����, ���������
# ����������� �� ������ CSR.

# ������ ������� ������ [v3_req]
[v3_req]
...
# �������� ��������� ������ � ������� ������� ������:
subjectAltName = "DNS:www.example.com, DNS:example.com,DNS:example.net"
# ��� ������� ������� �� �����, ������� ���������� CSR.

��� ������� ������� �� �������� CSR �������� � ţ ���������� -reqexts «v3_req» ������ � ��� ������, ����� ��� ����� �������� �������������� ���� subjectAltName. ���� � �����ģ���� ������� �������� ���������� �ң� �ͣ�, �� �������� ����� �������� ����� ����������. ������ ��������� ����� ������ DNS:hostname.domain.name, ��������� ��������� ������ ���� ��������� ��������, � ��� ������ ��� ������ ���� ��������� � �������. ��� ������ �� �������� CSR �� ����� 3 ������ 3 � �������������� ����������:

openssl req -nodes -new -newkey rsa:2048 \ 
-keyout ca/private/cert1key.pem -out ca/certs/cert1csr.pem -reqexts "v3_req"

���� ��� �������� CSR �� ���������� �������� -reqexts, �� ����� CSR ����� ������ ������� ���������� � ������������ ������ �������. �����ģ���� ������ �������� ��� ���������� �������������� ���� ������ 3 � ������������ ����� �������� ������ ������.

����������: ���� �� ������ ��������� ��������� ������������ � ������ ������� �ͣ� �������� � ������, �� ������ ���������� ����� ������� ����������� � �������������� ������������ ����������������� ����� (openssl.cnf) �� ���-�� ����� �����������, � ����� ������������� ��������� -config filename ��� ������ ������� �� ������ �� ���� �������������. ���������� �������� ���������������� ������ ����� ���� �����, ������ ������� �� ����� � ��������������.

���� �� ������ ������� ����������� � ����������� ������� ������� � ������� 1 ��� 2, �� � ���������� � �����ģ���� ���� ������� openssl.cnf �������� ���:

# ������� ������ [req]
[req]
....
# �������� ��� ����������������:
req_extensions = v3_req

��� ����� ����������� �������� ����������� subjectAltName ����� ���������� ����������� � ������ CSR.

������

��������� �� �������� ������, ��������� � SSL

� ��������� ����� ���������� ��������� �������� ������, ������������ ��� �������� ������������, ������ � ������ ������, ��������� � X.509/SSL. ������ ���������� ����� ������ ���� ������������� �� �� ����������, ������ — ���. ������ ��� ����������� � ������, �������� ���� ������� �����:

  1. ��� ��������� � SSL ������� (�����������, ����� � ������) ���������� ���������� ��������� DER. DER — ��� �������� (8 ���) ���������. ���, ����� ����� �������, ��������, ��� ���������� ����� ������ �� ����������� ����� ������. PEM (Privacy Enhanced Mail) — ��� ����� �������� ��������������� (� �������������� base64) �������������� �������� DER � ����� �����, ��� ����� ���� ���������� �� ����������� ����� ��� �������� �� ������ ���������������� ��������.

  2. ��������� ��������� PKCS#X, � ���������, PKCS#7 (� ��� CMS-���������� �� IETF RFC 5652), PKCS#12 � PKCS#8, ������������ ����� ���������� (�������������� � ������ DER), ������������ ��� ����������� ���������� �������� � ����� � ��� �� �����. ���� ���� �������� ���� ������, ������, ���������� ��� CRL, �� ������ ������� ��������� �� ��������� (����, �����������, �� ����� ���� � �����ޣ� � ���������).

  3. �� ����� ����, ��������� ���� �������� ��� ���� ������, � ������ ��������� ��� �� ���������. ������, ������ ������ �����, ��������� ����� ���������� �� ��������� ��� ������������� (� ����� ������ ���������), �������������, ��� ���������� ����� �ӣ-���� ��������� ��������� ��� ����������� ������������ �������� ����� ����� (� ������ ������ PKCS#8). � ��������, ���������� X.509v3 �������� ����� ��������� ����������, � ������ ����� ����������, ��� ��� ���� ��������� ���������. �� ���������� X.509v3 ��� �� ���� �������� �����������. �������, ���� � ����� ���������� ������ ��������� ����������, �� �� �� ��������� � ���������� (��������, ����� � ������������ .cer ��� .crt). ������, ����� � ����� ����� ���������� ���������� � �������� ���� (����� � ������������ .p12/.pkx), �� � ���� ������ ������������ ��� ������� ��� �������, ��������� �����������, � ������ ����� ��������� ��������� (� ������ ������ PKCS#12).

  4. ������ ������� �� ���������� PKCS#X ������������ ����� ���������� (�������������� � DER), ���������� ������� �� ����� ������� ������������� ��� �������� ����������� �����-���� ������� �����, ��������, ������� �� ���������� ����������� (CSR). � ����� ������� �������������� ������, ���������� �� ���������� �����, � �������� ����� ���������� � PEM.

  5. �� ������ ������� ���������� ����� ������������ ���������� ��������, � �� ����������� �����. ���, ���� ���������, ��� ���� ������ ��������� ������ ���������� (��� ��������� �����), �� �� ����� ����� ���������� ��� .pem, ��� � .crt, � ���� .cer.

  6. � �������� ����������� ����� �������� ����, ���������� �� ��� ����������, � ��������� ���������. ���� ��� �����-�� �����������, ������ �� ����������� � DER. ���� �� ������ ��������� ‘——BEGIN’ — ��� PEM.

������ PEM

� �������� ������� �� ��������� (��������� �������) OpenSSL ������������ ������ ����� ���������� ������������������ Privacy Enhanced Mail (PEM). ����������� ������ ������������ X.509, ���, �������, � ���� ��������� ��������, ��������� � SSL, — ASN.1 DER (�������� ������). PEM �������� �������� ���� DER � base64 (RFC 3548), ��� ���� ��������� ��������� ������ (������������ ������ �������� ASCII/IA5) ������� �����, ����� ����� �������, ������������ ��������� ���������. �������������� � PEM ������� �������� ������������ � ����������� ������, ������ �� ������� ���������� � ������������� ����� ����� �������� � ������������ ����� ��������� ��� ������ ������ �������� ���� ����������� � ������� base64, ������� ��������� ����� ����� ��������. ����� PEM �������� �������� ���:

-----BEGIN CERTIFICATE-----
MIIDHDCCAoWgAwIBAgIJALt8VJ...
...
Cfh/ea7F1El1Ym1Zj2v3wLhRl1...
NH5lEmZybl+m2frlkjUv9KAvxc...
IFgovdU8YPMDds=
-----END CERTIFICATE-----

BLAH BLAH BLAH 

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,6EF6203EF1A9533A

r7LMq15wr1OOmMsD84KyNo+5yY...
El3/msvQ98BkaMihajEn5f2UxO...
...
f6uoSk8HBZLItWTxqRuBRVb8jq...
hdp9hvvdja9XIrAPGQJ0u2QVw==
-----END RSA PRIVATE KEY-----

����������: � �����ģ���� ������� ������, ���� ��� ������ ��� ��������� ���������, ���� �������� ��� ���� ��������� (����� ��������� ���������� ������������).

����� BEGIN CERTIFICATE � END CERTIFICATE �� ������� ����� ��������� ��������� ��������, ����������� ���������������� � ������ ���������, ������������� ����� ��������-��������������. � ����� ����� PEM ����� ���� ����� ������ �������� (������ �� ������� ��������� ������������������� ——BEGIN ——END), � ����� ���� ���� ����� ��������� ������ ���������� ��, ����� � ����� ������ ����������, �� �� ������ �������������. ������ PEM ������̣� � RFC 1421 ��� ������������� � S/MIME (RFC 3850).

�������� �����, ������������ � ��������� BEGIN ������� PEM

� RFC 7468 ���������� ��������� �������� ���� (��� �����), ������� ����� ����������� � ������, �������������� � PEM, � ��������� ——BEGIN � ——END (��, ��� ��� �� �����������, �� ������̣� ����������� IANA ��� ���� �������� ����). ����� ����, ������������ ���� pem.h �� ������ OpenSSL (������ 1.0.2d) �������� ������ �������� ����� (��������� �� ������� ���� ���������� � RFC 7468, ��������� ����� ���� ������ ������Σ����� — �������� ���������� ����). � ������� ���� ��������� �������� �����, ��������� �� ���� ���������� � ����֣���� ���������������� ���������� � �������������.

����������: � �������������� � PEM ������ ������ �������� ����� ������ �������������� � ����� ��������� BEGIN � END. ��� ��������� ������ ——BEGIN � —-END �� ��������, �� ����, ���� � ������� ��������� �������� ����� CERTIFICATE, �� � PEM-����� ��� ����� �������������� ������: � ——BEGIN CERTIFICATE—— � � ——END CERTIFICATE——.

�������� ����� �������� ���������� ����������
CERTIFICATE RFC 7468 �������� ���� �������������� � DER ���������� X.509v3, ��� ���������� � ������� 4 RFC 5280 � RFC 7468 ������� ����������� �������� ����� X509 CERTIFICATE � X.509 CERTIFICATE
X509 CRL RFC 7468 �������� ���� �������������� � DER ������ ������ ������������ X.509, ��� ���������� � ������� 5 RFC 5280 � RFC 7468 ������� ���������� �������� ����� CRL
CERTIFICATE REQUEST RFC 7468 �������� ���� �������������� � DER ������ ����������� PKCS#10 (�� �� CSR), ��� ���������� � RFC 2986 � ��������� � RFC 5967 � RFC 7468 ������� ���������� �������� ����� NEW CERTIFICATE REQUEST
PKCS7 RFC 7468 �������� �������������� � DER ��������� PKCS#7 (CMS) (� ������� ����� ���� ��������� ��������� ������������), ��� ���������� � RFC 2315 � RFC 7468 ������� ���������� �������� ����� CERTIFICATE CHAIN � ������ ���������� ������������� ���������� ������������ � ����� ��������� PKCS#7 (� RFC 7468 ������������ �������� PKCS#7 �� IETF CMS RFC 5652, �������� ����).
CMS RFC 7468 �������� �������������� � DER ��������� CMS (� ������� ����� ���� ��������� ��������� ������������), ��� ���������� � RFC 5652 � �������� ������� ��������� � ��������� ���� ���������� PKCS#7
PRIVATE KEY RFC 7468 �������� ��������������� �������������� � DER ��������� PKCS#8 � ����� ������, ��� ���������� � ������� 2 RFC 5958 � RFC 5958 ��������� PrivateKeyInfo (�� RFC 5208) ������������� � OneAsymmetricKey, ��� ��������� �������� � ���� ��������� ��� ��������, ��� � �������� �����. ������, � RFC 7468 ���� ������ �� �������������� ��� �������������� � PEM �������� ������ (�������� �������� ��������� ����� PUBLIC KEY ����). ��������� ��������� PKCS#8 �������������� �������� ��������, �� ������ ������ ���������� (���� ����� �� ���� �� ���������) ������������� �������� ���� RSA PRIVATE KEY, DSA PRIVATE KEY, EC PRIVATE KEY or ANY PRIVATE KEY, DSA PARAMETERS, EC PARAMETERS, DH PARAMETERS (��� ��� ����� ���� ������������� � �������������� OpenSSL).
ENCRYPTED PRIVATE KEY RFC 7468 �������� ������������� �������������� � DER ��������� PKCS#8 � ����� ������, ��� ���������� � ������� 3 RFC 5958
PUBLIC KEY RFC 7468 �������� �������������� � DER ��������� SubjectPublicKeyInfo (����-���������) � ����� �������� ������, ��� ���������� � ������� 4.1.2.7 RFC 5280 ��������� SubjectPublicKeyInfo ��������� �������� �������� �, �������������, RFC 7468 ������ ������ ���������� (���� ����� �� ���� �� ���������) ������������� �������� ���� DSA PUBLIC KEY, RSA PUBLIC KEY � ECSDA PUBLIC KEY (��� ��� ����� ���� ������������� � �������������� OpenSSL).
ATTRIBUTE CERTIFICATE RFC 7468 �������� �������������� � DER ���������� ���������� (Attribute certificate), ��� ���������� � RFC 5755 ���������� ����������� ������������ ����� �������������� � DER ����������� X.509, �� ���������� ��������� �����. � �������� ��� ������������ � ����� ����������� (� �� ��������������). � ������������ ����� pem.h OpenSSL (1.0.2d) ��� ���������������� ��������� ����� PEM ��� ������ ���� �����������.
CERTIFICATE PAIR pem.h ?? ������̣� � ������������ ����� pem.h OpenSSL, �� ����������� � RFC 7468. � ��������� ������ ������� ������� �� ����������.
TRUSTED CERTIFICATE pem.h ?? ������̣� � ������������ ����� pem.h OpenSSL, �� ����������� � RFC 7468. � ��������� ������ ������� ������� �� ����������, �� ���������������� ��� ����������, ��� � ���� BasicConstraints ������� cA ���������� � TRUE.
PKCS #7 SIGNED DATA pem.h ?? ������̣� � ������������ ����� pem.h OpenSSL, �� ����������� � RFC 7468. � ��������� PKCS#7 ��������� ��������� ����� �������� (‘content types’), ���� �� ������� — ����������� ������ (��� ����� �� ��������� � ������ ����ң����).
SSL SESSION PARAMETERS pem.h ?? ������̣� � ������������ ����� pem.h OpenSSL, �� ����������� � RFC 7468. � ��������� ������ ������� ������� �� ����������.
X9.42 DH PARAMETERS pem.h ?? ������̣� � ������������ ����� pem.h OpenSSL, �� ����������� � RFC 7468. � ��������� ������ ������� ������� �� ����������.

����� ������

����� ���������� ����� �� ������� �������� � ������������� ��� �����������. ���� ��� �������� �������� ���������� ����� (��� � � ������ ����), �� ��������� ���������� ����� ������ ������������ � ����������:

���������� ���������� ����� �������� ���� ������ ����������
���� .pem �� PEM �������������� � PEM ���� � ������� DER � ���������� PKCS#8/RFC 5958, ����� ���� ���������� ��� �� ���������� (����� ������ �� ��������� ����� PEM), ���� ���� �� ����������, ��������� ��� ��� ���������� ������. �������� ����� PEM: PRIVATE KEY ��� ENCRYPTED PRIVATE KEY.
.der �� DER ������������ �����. ���� � ������� DER � ���������� PKCS#8/RFC 5958, ����� ���� ���������� ��� �� ����������, ���� ���� �� ����������, ��������� ��� ��� ���������� ������.
.key �� PEM ����� ���������� ������������ �� ������ *nix-�������� ��� ����������� ��������� �����. �������������� � PEM ���� � ������� DER � ���������� PKCS#8/RFC 5958, ����� ���� ���������� ��� �� ����������, ���� ���� �� ����������, ��������� ��� ��� ���������� ������. �������� ����� PEM: PRIVATE KEY ��� ENCRYPTED PRIVATE KEY.
���������� .crt ��� PEM ��� DER ������ � ������� PEM (� RFC 7468 ������������, ����� ��� ���������� ������ �������� PEM-������). �������� ������ ���������� X.509v3. �� ���������. ����� ������ ��������� �������� MSIE, Firefox � Chrome.
.cer ��� PEM ��� DER ������ � ������� DER (� RFC 7468 ������������, ����� ��� ���������� ������ �������� DER-������). �������� ������ ���������� X.509v3. �� ���������. ����� ������ ��������� �������� MSIE, Firefox � Chrome.
.pem ����� ���� PEM ���������� ����� �� ������� � ��� ����������. � ����� ����� ���� ����������� ��� ������, �� ������ ����� �� ���������� ������������ � ������ ������������ ��, �����ޣ���� � ��������� PKCS#7 (CMS), ��� ���� ������ ����������� PKCS#10. �������� ����� PEM ������� ������������ � ����������. � ��������� ���������� ���������, ��� ���� � ����� ����������� ������������ ����� � ����������� .crt. ����� ������ ��������� ������ Firefox.
.der ����� ���� DER ���������� ����� �� ������� � ��� ����������. � ����� ����� ���� ����������� ��� ������, �� ������ ����� �� ���������� ������������ � ������ ������������ ��, �����ޣ���� � ��������� PKCS#7 (CMS), ��� ���� ��������� PKCS#12, ��� �ݣ ���-��. � ��������� ���������� ���������, ��� ���� � ����� ����������� ������������ ����� � ����������� .cer. ����� ������ ��������� ������ Firefox.
.p12 ����� ���� PKCS#12 (RFC 7292) PKCS#12 (RFC 7292) ������������ ����� ������ ��������������� � DER ���������� ������ ����������. ����� ��������� (�, ��� �������, ��������) ���� ��� ��������� ������������ X.509v3 � ����� ��������� (�, ��� �������, ��������) �������������� � DER �������� ����, �� ����� ��������� � ������ ���� ������. ����� ������ ��������� �������� MSIE � Chrome.
.pfx �� RFC 7292 PKCS#12 (RFC 7292) ������������ ����� ������ ��������������� � DER ���������� ������ ����������. �� ��, ��� � ���� � ����������� .p12, �� ������ ������������ � �������� Microsoft � �� ���������� �������� ���� (��� ���������) ������������ X.509v3, �������������� � DER, � �������������� � DER �������� ����. ����� ������ ��������� �������� MSIE � Chrome.
.p7b ��� PKCS#7 (��� RFC 5652) PKCS#7 (��� RFC 5652) CMS DER-���������, �������������� � PEM. ����� ��������� ���� ��� ��������� ������������, � ����� ������ �������. ����� ������ ��������� �������� MSIE, Firefox � Chrome. ����� ���� ����������� � PEM, � ����� ���� � ���.
������ .csr ��� PEM/PKCS#10 ����� ����� �������������� ���������� .pem. ������ ����������� (CSR). �������� �������������� � PEM ��������� � ������� DER PKCS#10 (RFC 7292), �������� �������� ���� ������������, ��� ��������� � ��������, ������� ��������� �������� � ����������.
.crl ��� PKCS#7 ��� ��������� ������ ������������ ������ ������ ������������ (CRL) ������������ ����� �������������� � DER ��������� ������ ������������. ����� ���� ��������� � ��������� PKCS#7 (RFC 2315, ��� (����) ������ �������������� � DER ��������� ������ ������������, ������̣���� � ������� 5 RFC 5280. ������ ������������ � PEM. ����� ������ ��������� �������� MSIE � Chrome.

������ ������������

����������, ��������������� �� �������� ����������� �� ������� ����������� ��������� �������� ��ӣ� ������. ��� ���� �ӣ ���� ��������� ��������� �ݣ � ������������� ����������� �/��� �����-�����������. �������, ���� ������ ����������� ���������������� �� ������, �� ������ � �������� ������ ��������������� ���������� ������������ — ������������������ (multi-certificate). �������� ����������������� ������ ���������� �������� ������������ (certificate bundles), �������� ������������ �� (ca-bundles) ��� ��������� ������������ (certificate chains). ���������� ���������� ��������� �������� ��������� ���أ���� ���������� � ���������, ������� �ӣ ����� ���������� ���������� ��������������� ����� ������������� ������������ ��� �����-������������ (� ���� �������� ������������) ����� ������. ���������� ��� �������� ������ �������� ������ ������������:

  1. � ������� ��������� PKCS#7 (��� RFC 5652). ������ �������� ���� ����� ���������� .p7b (�������������� ���������� MSIE � Chrome ��� ������� ������������������). ����� � ����� ����������� ������� �� �������� ��������� �����.

  2. � ������� ��������� PKCS#12 (RFC 7292), �������������� ����� �������������� ��� PKCS#7 � PKCS#8. �������� ���� ����� ����� ���������� .p12 ��� .pkx (�������������� ���������� MSIE � Chrome ��� ������� ������������������). �� ����������, ���� � ����������� .pkx �������� � ���������� (PKCS#7), � �������� ���� (PKCS#8); ���� � ����������� .p12 ����� ��� ���������, ��� � �� ��������� ��������� �����. ��� ���-�������� IIS ��������� ����� � ����������� .pfx (���� ����� �������������� ����� � ����������� .p12).

  3. ����������� � ������������ ������� �������������� � PEM ������������. ��������� PEM-����� � ������������� (�������� ����� PEM CERTIFICATE) ������������ ����� ��������� �����, �� ����� ���������� ���� � ������ ������� � ������� ���������� ��������� ��� ����� ������� unix:

    cat intermediate2.crt intermediate1.crt root.crt > ca.pem
    # ������� �������� ������������ �������� ����������� ��������
    # ������������������ ��������: ���������� �������,
    # �������������/�����-����������� �, �������, �������� ����������.
    # ���������� � ���������� ���� (� ������ ������ ca.pem) �����
    # �������������� � ��������� Apache2 SSLCACertificateFile.
    

    �������� ���������� ������ � ������� PEM ����� ������� ���������� ��-�� ��� ��������� � Apache. � ����� ������� ������������ ������� �� ������������ �������� �����.

������� OpenSSL ��� �����������, ���������� � ����������� � ������������� � �������

� ���� ������� �������� ��������� ������� OpenSSL ��� ���������� ��������� �����������. � �������� ��������� � OpenSSL ������������ ������ PEM.

# ����������� PKCS12 > ���������� ����������� PEM-�������
openssl pkcs12 -clcerts -nokeys -in cert.p12 -out usercert.pem 
openssl pkcs12 -clcerts -nokeys -in cert.p12 -out usercert.crt 
# ����������� ������ ����������

openssl pkcs12 -nocerts -in cert.p12 -out userkey.pem
openssl pkcs12 -nocerts -in cert.p12 -out userkey.key
# ����������� ������ ����

# ����������� PEM > PKCS12 (.p12 ��� .pkx)
# � ���������� ���������� ���� � DER (��������) ������� � ����������� .p12 ��� .pfx
openssl pkcs12 -export -out cert.p12 -inkey ./userkey.pem -in ./usercert.pem
openssl pkcs12 -export -out cert.pkx -inkey ./userkey.pem -in ./usercert.pem
#����������: � ����� �����ģ���� ������� ����� ������������� ��������� �����, ����� ţ �� ��������
# ������ ������� Enter �� ������ ������ � ��� �����������, ���� ����������� ��������� �������
openssl pkcs12 -export -out cert.p12 -inkey ./userkey.pem -in ./usercert.pem - nodes -passout pass:
# �������������� � PEM ���������� � ���� �������������� � ������ PKCS#12 (����������� � DER)

������

������� ������������ ���������� PKCS#X � RFC

� ���� ������� ���� �����ң����� ������ � ������ ������������ ���������� PKCS �� �� RFC-�����������.

����� PKCS RFC ����������
PKCS#1 RFC 8017 ��������� ��� ��������� RSA, ������������� ����������������� ���������, ����� ���������� � ����� �������.
PKCS#5 RFC 8018 ����� ��������� ������ ������������� ������ (������������ � PCKS#8, PKCS#7 � PKCS#12).
PKCS#7 RFC 2315 ��������� ���������� ������������������ ��������� (Cryptographic Message Syntax, CMS). ������ ����������� � PEM. ������ ������ ���������, � ���� ����� ����������� ���� ��� ��������� CRL (� ���� ������ ���� ����� ����� ���������� .crl, �� �� ������), ��� ���� ��� ��������� ������������ (ExtendedCertificatesAndCertificates) (���������� ����� .p7b). ��������� �������� CMS �� IETF (� ��������, �� �� ���������, ����������� � PKCS#7) ������̣� � RFC 5652.
PKCS#8 RFC 5958 RFC �������������� ������������ PKCS#8. ��������� ������, ���� ����� ���������� ��� ��������, ��� � �������� �����. ������ ���� ������������� � ��������� �������. ����������� ����� ���� ����������. ���� ����������� � PEM, � RFC ������������� ������������ ���� � ����������� .pem, ���� ����������� � DER, ������������� ������������ ���� � ����������� .p8 (�������������� �� �����).
PKCS#9 RFC 2985 � RFC 7894 �������� ����������, ������� ����� �������������� � PKCS#7, PKCS#8 � PKCS#10.
PKCS#10 RFC 2986, ��������� � RFC 5967 �������������� � DER ��������� ������� �����������. �������� ��������� ���������, ����������� �������� ��������� �����, � ����� �������� ������� ����� �������� � �������� ����������. ����� ������ � ������� PEM.
PKCS#12 RFC 7292 ����� ��������� ��� ������������ ������. ������ ��������� ������� �� ����������� PKCS#7 � PKCS#8 ������ ����ݣ���� ���������. ���������� ������ — .p12 � .pkx. ������������� � ������� DER.

������

������ � ������������� � �������� ���������

����������� ����� ���� ������������� � ��������� ������� � ������� ��������, ��������� � ���� �������. ������������ ��� ���������� ����� ����������. ��� ��������� ���������� ������ ��������, ����� ��������, ��� ����� ������ ������ �����ģ���� ����� �������� ����������. ����������� ������ ��������� ��� �������������� ������������ (� ������ Chrome � MSIE ������ ���� ������� ��������������� ������� «������������� ������ ������������» (Intermediate) ��� «���������� �������� ������ ������������» (Trusted Root)). ������ Firefox �������� ��������� ����� � ����������� .pem. ��� MSIE � Chrome ����� ����� � ��������� �������������, ��������� � ������� ��������� ���� ������� 1, 2, 3 ��� 3A, ������� ���������� .pem, ����� ������ ������������� �� ca/cacert.pem � ca/cacert.cer ��� ca/cacert.crt �� ������ ������.

MSIE (11): MSIE ��������� ����� � ����������� .cer, .crt, .p7b, .pfx, .p12 (��������, � ������). MSIE -> ���� «������» (Tools) -> «�������� ������������» (Internet Options) -> ������� «����������» (Content) -> ������ «�����������» (Certificates) -> �������� ��������������� ��������� ������������ -> ������ «������» (Import), � ����� ��������� ������� ������� �������.

�������������� ����� ��� ������ Windows 7+: ������������ ������� ���������� (Microsoft Management Console, MMC) � ������������� ��������� «�����������» (Certificate). ��������� � ���������������� ��������� ������������ -> ���� «��������» (Actions) -> «��� ������» (All tasks) -> «������» (Import), � ����� ��������� ������� ������� ������� (��������� ����� � ����������� .cer, .crt, .p7b, .pfx, .p12 (��������, � ������)).

� ��������� AD ����������� ����� ����� �������������� � ������� �������� ��������� ������� (Group Policy Object, GPO). ��������� «�����������������» (Administrative Tools) -> «���������� ��������� ���������» (Group Policy Manager) -> ��������� ����� «������» (Domains) -> �������� ������ ������� ���� �� «Default Domain Policy» � �������� «��������» (Edit) -> ��������� ����� «������������ ����������» (Computer configuration) -> ��������� ����� «��������»->��������� ����� «������������ Windows» (Windows Settings)->��������� ����� «��������� ������������» (Security Settings)->��������� ����� «�������� ��������� �����» (Public Key Settings)->�������� ������ ������� ���� �� «���������� �������� ������ ������������» (Trusted Root Certificate Authorities)->�������� «������» (Import), � ����� ��������� ������� ������� �������.

Firefox (41.x.x) Firefox ��������� ����� � ����������� .pem, .cer, .crt, .der ��� .p7b. �������� ���� «�����������» (Tools) -> «���������» (Options) -> «��������������» (Advanced) -> ������� «�����������» (Certificates) -> «�������� ������������» (View Certificates) -> ������� ������ «�������������» (Import) � �������� ����.

Chrome (46.x.x.x) Chrome ��������� ����� � ����������� .cer, .crt, .p7b, .pfx, .p12 suffix (��������, � ������). �������� «���������» (Settings) -> ������� ������ «�������� �������������� ���������» (Enable Advanced Settings) -> ��������� � ������� HTTPS/SSL -> ������ «��������� �����������» (Manage Certificates) -> �������� ��������������� ������� -> ������ «������» (Import), � ����� ��������� ������� ������� �������.

������

RFC �� ����

������ RFC, ����������� � TLS, ������������ X.509 � PKI. ����������� �� ��� ����������� � ������ ����� ���������. ������ �� ������, �� �� ��������� ��� �� ���� ���������� ������ ��� ��� ���������� ����������� RFC. ��� ��� � �������� �ޣ�� �� ������ �������������.

RFC 2315 PKCS #7: Cryptographic Message Syntax Version 1.5
PKCS #7: ��������� ������������������ ���������, ������ 1.5
B. Kaliski. ���� 1998 �. ������: INFORMATIONAL. DOI: 10.17487/RFC2315. ��������� ������ CMS �������� ����� � RFC 5652.
RFC 2585 Internet X.509 Public Key Infrastructure Operational Protocols: FTP and HTTP.
������������ ��������� ��� Internet X.509 PKI: FTP � HTTP
R. Housley, P. Hoffman. ��� 1999 �. ������: PROPOSED STANDARD. DOI: 10.17487/RFC2585. ���������� ������ ���������� ������ � ���������� ����������� ���� ������.
RFC 2986 PKCS #10: Certification Request Syntax Specification Version 1.7
PKCS #10: ������������ ���������� ������� ������������, ������ 1.7
M. Nystrom, B. Kaliski. ������ 2000 �. �������� RFC2314, �����̣� � RFC5967, ������: INFORMATIONAL.
RFC 4210 Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)
�������� ���������� ������������� (CMP) �������������� �������� ������ X.509 ��������
C. Adams, S. Farrell, T. Kause, T. Mononen. �������� 2005 �. �������� RFC2510, �����̣� � RFC6712, ������: PROPOSED STANDARD.
RFC 4211 Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF).
������ ��������� ������� ����������� (CRMF) �������������� �������� ������ X.509 ��������
J. Schaad. �������� 2005 �. �������� RFC2511, ������: PROPOSED STANDARD.
RFC 5019 The Lightweight Online Certificate Status Protocol (OCSP) Profile for High-Volume Environments
�����ޣ���� ������� ��������� ������-��������� ������� ����������� (OCSP) ��� ������ ����������� ����
A. Deacon, R. Hurst. �������� 2007 �. ������: PROPOSED STANDARD.
RFC 5246 The Transport Layer Security (TLS) Protocol Version 1.2
�������� TLS, ������ 1.2
T. Dierks, E. Rescorla. ������ 2008 �. �������� RFC3268, RFC4346, RFC4366, ��������� RFC4492, �����̣� � RFC5746, RFC5878, RFC6176, ������: PROPOSED STANDARD.
RFC 5272 Certificate Management over CMS (CMC)
���������� ������������� ������ CMS (CMC)
J. Schaad, M. Myers. ���� 2008 �. �������� RFC2797, �����̣� � RFC6402, ������: PROPOSED STANDARD.
RFC 5273 Certificate Management over CMS (CMC): Transport Protocols
���������� ������������� ������ CMS (CMC): ������������ ���������
J. Schaad, M. Myers. ���� 2008 �. �����̣� � RFC6402, ������: PROPOSED STANDARD.
RFC 5274 Certificate Management Messages over CMS (CMC): Compliance Requirements
���������� ������������� ������ CMS (CMC): ����������� ����������
J. Schaad, M. Myers. ���� 2008 �. �����̣� � RFC6402, ������: PROPOSED STANDARD.
RFC 5280 Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
������� ����������� � ������ ������ ������������ (CRL) Internet X.509 PKI
D. Cooper, S. Santesson, S. Farrell, S. Boeyen, R. Housley, W. Polk. ��� 2008 �. �������� RFC3280, RFC4325, RFC4630. �����̣� � RFC6818. ������: PROPOSED STANDARD. DOI: 10.17487/RFC5280.
RFC 5652 Cryptographic Message Syntax (CMS)
��������� ������������������ ��������� (CMS)
R. Housley. �������� 2009 �. �� �� STD0070. �������� RFC3852. ������: INTERNET STANDARD. DOI: 10.17487/RFC5652. ����� ��������� ������� ��������� � PKCS#7 (RFC 2315).
RFC 5746 Transport Layer Security (TLS) Renegotiation Indication Extension
���������� ��������� ��������� ����������� TLS
E. Rescorla, M. Ray, S. Dispensa, N. Oskov. ������� 2010 �. ��������� RFC5246, RFC4366, RFC4347, RFC4346, RFC2246, ������: PROPOSED STANDARD.
RFC 5878 Transport Layer Security (TLS) Authorization Extensions
���������� ����������� TLS
M. Brown, R. Housley. ��� 2010 �. ��������� RFC5246, ������: EXPERIMENTAL.
RFC 5912 New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)
����� ������ ASN.1 ��� �������������� �������� ������ � �������������� X.509 (PKIX)
P. Hoffman, J. Schaad. ���� 2010 �. �����̣� � RFC6960, ������: INFORMATIONAL.
RFC 5914 Trust Anchor Format
������ ���������� ������
R. Housley, S. Ashmore, C. Wallace. ���� 2010 �. ������: PROPOSED STANDARD. DOI: 10.17487/RFC5914.
RFC 5937 Using Trust Anchor Constraints during Certification Path Processing
������������� ����������� ���������� ������ ��� ��������� ���� ������������
S. Ashmore, C. Wallace. ������ 2010 �. ������: INFORMATIONAL. DOI: 10.17487/RFC5937.
RFC 5958 Asymmetric Key Packages
������ ������������� ������
S. Turner. ������ 2010 �. �������� RFC5208. ������: PROPOSED STANDARD. DOI: 10.17487/RFC5958. �������� PKCS#8.
RFC 5967 The application/pkcs10 Media Type
�������� application/pkcs10
S. Turner. ������ 2010 �. ��������� RFC2986, ������: INFORMATIONAL.
RFC 6066 Transport Layer Security (TLS) Extensions: Extension Definitions
���������� TLS: ����������� ����������
D. Eastlake 3rd. ������ 2011 �. �������� RFC4366, ������: PROPOSED STANDARD.
RFC 6125 Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)
������������� � ����������� ����������������� �������� ����������� �� ������ ������� ���������� � PKIX � ��������� TLS
P. Saint-Andre, J. Hodges. ���� 2011 �. ������: PROPOSED STANDARD.
RFC 6347 Datagram Transport Layer Security Version 1.2
�������� DTLS ������ 1.2
E. Rescorla, N. Modadugu. ������ 2012 �. �������� RFC4347. �����̣� � RFC7507, ������: PROPOSED STANDARD. DOI: 10.17487/RFC6347.
RFC 6176 Prohibiting Secure Sockets Layer (SSL) Version 2.0
������ SSL ������ 2.0
S. Turner, T. Polk. ���� 2011 �. ��������� RFC2246, RFC4346, RFC5246, ������: PROPOSED STANDARD.
RFC 6402 Certificate Management over CMS (CMC) Updates
���������� CMC
J. Schaad. ������ 2011 �. ��������� RFC5272, RFC5273, RFC5274, ������: PROPOSED STANDARD.
RFC 6712 Internet X.509 Public Key Infrastructure — HTTP Transfer for the Certificate Management Protocol (CMP)
�������������� �������� ������ X.509 �������� — �������� CMP �� HTTP
T. Kause, M. Peylo. �������� 2012 �. ��������� RFC4210, ������: PROPOSED STANDARD.
RFC 6818 Updates to the Internet X.509 Public Key Infrastructure Certificate and Certificate Revokation List (CRL) Profile
���������� ��� ������� ����������� � ������ ������ ������������ (CRL) Internet X.509 PKI
P Yee. ������ 2013 �. ��������� RFC5280. ������: PROPOSED STANDARD. DOI: 10.17487/RFC6818
RFC 6960 X.509 Internet Public Key Infrastructure Online Certificate Status Protocol — OCSP
�������� OCSP �������������� �������� ������ X.509 ��������
S. Santesson, M. Myers, R. Ankney, A. Malpani, S. Galperin, C. Adams. ���� 2013 �. �������� RFC2560, RFC6277, ��������� RFC5912, ������: PROPOSED STANDARD.
RFC 6961 The Transport Layer Security (TLS) Multiple Certificate Status Request Extension
���������� TLS ������� ������� ���������� ������������
Y. Pettersen. ���� 2013 �. ������: PROPOSED STANDARD.
RFC 6962 Certificate Transparency
������������ �����������
B. Laurie, A. Langley, E. Kasper. ���� 2013 �. ������: EXPERIMENTAL. DOI: 10.17487/RFC6962.
RFC 7027 Elliptic Curve Cryptography (ECC) Brainpool Curves for Transport Layer Security (TLS)
������������ �� ������ ������������� ������ (ECC): ������ Brainpool ��� TLS
J. Merkle, M. Lochter. ������� 2013 �. ��������� RFC4492, ������: INFORMATIONAL.
RFC 7030 Enrollment over Secure Transport
����������� ������ ����������� ����������
M. Pritikin, Ed., P. Yee, Ed., D. Harkins, Ed.. ������� 2013 �. ������: PROPOSED STANDARD.
RFC 7091 GOST R 34.10-2012: Digital Signature Algorithm
�������� �������� ������� GOST R 34.10-2012
V. Dolmatov, Ed., A. Degtyarev. ������� 2013 �. ��������� RFC5832, ������: INFORMATIONAL.
RFC 7093 Additional Methods for Generating Key Identifiers Values
�������������� ������ ��������� �������� ��������������� �����
S. Turner, S. Kent, J. Manger. ������� 2013 �. ������: INFORMATIONAL.
RFC 7250 Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS).
������������� �������������� �������� ������ � TLS � DTLS
P. Wouters, Ed., H. Tschofenig, Ed., J. Gilmore, S. Weiler, T. Kivinen. ���� 2014. ������: TXT=38040 ����, ������: PROPOSED STANDARD.
RFC 7251 AES-CCM Elliptic Curve Cryptography (ECC) Cipher Suites for TLS.
����� AES-CCM Elliptic Curve Cryptography (ECC) ��� TLS
D. McGrew, D. Bailey, M. Campagna, R. Dugal. ���� 2014 �. ������: INFORMATIONAL.
RFC 7292 PKCS #12: Personal Information Exchange Syntax v1.1
PKCS #12: ��������� ������ ������������� ������� v1.1
K. Moriarty, Ed., M. Nystrom, S. Parkinson, A. Rusch, M. Scott. ���� 2014 �. ������: INFORMATIONAL. DOI: 10.17487/RFC7292
RFC 7457 Summarizing Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS)
����� ��������� ���� �� Transport Layer Security (TLS) � Datagram TLS (DTLS)
Y. Sheffer, R. Holz, P. Saint-Andre. ������� 2015 �. ������: INFORMATIONAL.
RFC 7468 Textual Encodings of PKIX, PKCS, and CMS Structures
��������� ��������� �������� PKIX, PKCS � CMS
S. Josefsson, S. Leonard. ������ 2015 �. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7468
RFC 7507 TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks.
�������� TLS Fallback SCSV ��� �������������� ���� ���� «downgrade attack»
B. Moeller, A. Langley. ������ 2015 �. ��������� RFC2246, RFC4346, RFC4347, RFC5246, RFC6347. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7507.
RFC 7525
(BCP0195)
Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)
������������ �� ����������� ������������� TLS � DTLS
Y. Sheffer, R. Holz, P. Saint-Andre. ��� 2015 �. ������: BEST CURRENT PRACTICE. DOI: 10.17487/RFC7525.
RFC 7568 Deprecating Secure Sockets Layer Version 3.0.
������ SSLv3
R. Barnes, M. Thomson, A. Pironti, A. Langley. ���� 2015 �. ��������� RFC5246. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7568.
RFC 7627 Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension
���������� TLS ���� ������ � Extended Master Secret
K. Bhargavan, Ed., A. Delignat-Lavaud, A. Pironti, A. Langley, M. Ray. �������� 2015 �. ��������� RFC5246. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7627
RFC 7633 X.509v3 Transport Layer Security (TLS) Feature Extension
���������� ����������� x.509v3 TLS Feature
P. Hallam-Baker. ������� 2015 �. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7633.
RFC 7670 Generic Raw Public-Key Support for IKEv2
����� ��������� �������������� �������� ������ ��� IKEv2
T. Kivinen, P. Wouters, H. Tschofenig. ������ 2016 �. ��������� RFC7296, ������: PROPOSED STANDARD. DOI: 10.17487/RFC7670.
RFC 7685 A Transport Layer Security (TLS) ClientHello Padding Extension
���������� TLS ���������� ��������� ClientHello
A. Langley. ������� 2015 �. ��������� RFC5246. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7685.
RFC 7711 PKIX over Secure HTTP (POSH)
PKIX ������ ����ݣ����� HTTP (POSH)
M. Miller, P. Saint-Andre. ������ 2015 �. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7711.
RFC 7773 Authentication Context Certificate Extension
���������� ����������� Authentication Context
S. Santesson. ���� 2016 �. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7773.
RFC 7804 Salted Challenge Response HTTP Authentication Mechanism
�������� �������������� HTTP Salted Challenge Response
A. Melnikov. ���� 2016 �. ������: EXPERIMENTAL. DOI: 10.17487/RFC7804.
RFC 7817 Updated Transport Layer Security (TLS) Server Identity Check Procedure for Email-Related Protocols
�����̣���� ��������� �������� ����������������� �������� ������� TLS ��� ����������, ��������� � ����������� ������
A. Melnikov. ���� 2016 �. ��������� RFC2595, RFC3207, RFC3501, RFC5804, ������: PROPOSED STANDARD. DOI: 10.17487/RFC7817.
RFC 7894 Alternative Challenge Password Attributes for Enrollment over Secure Transport
�������������� �������� ������ ������ ��� ��������� EST
M. Pritikin, C. Wallace. ���� 2016 �. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7894.
RFC 7906 NSA’s Cryptographic Message Syntax (CMS) Key Management Attributes
�������� ���������� ������� ��� NSA CMS
P. Timmel, R. Housley, S. Turner. ���� 2016 �. ������: INFORMATIONAL. DOI: 10.17487/RFC7906.
RFC 7918 Transport Layer Security (TLS) False Start
«���������» ��� TLS
A. Langley, N. Modadugu, B. Moeller. ������ 2016 �. ������: INFORMATIONAL. DOI: 10.17487/RFC7918.
RFC 7919 Negotiated Finite Field Diffie-Hellman Ephemeral Parameters for Transport Layer Security (TLS)
������������� ��������� ��������� ���� DHE ��� TLS
D. Gillmor. ������ 2016 �. ��������� RFC2246, RFC4346, RFC4492, RFC5246, ������: PROPOSED STANDARD. DOI: 10.17487/RFC7919.
RFC 7924 Transport Layer Security (TLS) Cached Information Extension
���������� TLS �������������� � �������������� ����������
S. Santesson, H. Tschofenig. ���� 2016 �. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7924.
RFC 7925 Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things
������� TLS/DTLS ��� ��������� �����
H. Tschofenig, Ed., T. Fossati. ���� 2016 �. ������: PROPOSED STANDARD. DOI: 10.17487/RFC7925.
RFC 7935 The Profile for Algorithms and Key Sizes for Use in the Resource Public Key Infrastructure
������� ���������� � �������� ������ ��� ������������� � RPKI
G. Huston, G. Michaelson, Ed.. ������ 2016 �. �������� RFC6485, ������: PROPOSED STANDARD. DOI: 10.17487/RFC7935.
RFC 8017 PKCS #1: RSA Cryptography Specifications Version 2.2
PKCS #1: ������������ ������������ RSA ������ 2.2
K. Moriarty, Ed., B. Kaliski, J. Jonsson, A. Rusch. ������ 2016 �. �������� RFC3447, ������: INFORMATIONAL. DOI: 10.17487/RFC8017.
RFC 8018 PKCS #5: Password-Based Cryptography Specification Version 2.1
PKCS #5: ������������ ���������� �� ������� ������������ ������ 2.1
K. Moriarty, Ed., B. Kaliski, A. Rusch. ������ 2017 �. �������� RFC2898, ������: INFORMATIONAL. DOI: 10.17487/RFC8018.

������

��������� ��������

���� ���������� ��������� ������� ����� ��������.

  1. 25 ������ 2017 �.: � ������� ������������ ���������� PKCS#X � RFC ��������� ������ �� RFC ��� PKCS#5, ��������� ���������� �� PKCS#1 �� ������� �� RFC. � ������ RFC ��������� RFC 8017 � 8018.
  2. 16 �������� 2016: ���������� �������� � ������������ CRMF. ��������� ���������� � ���ģ���� � RFC 7918 «����������», ����������� ������� �������� �������� ��������� ����� ����� �������� ‘Finished’, �� ��������� ��������� ‘Finished’ �� �������. � ������ RFC ��������� RFC 7918 � 7935.
  3. 28 ���� 2016 �.: �����̣� ������ RFC. ����� ������ �� ������������� ����� subject � subjectAltName � ������������.
  4. 13 ���� 2016 �.: ��������� ����������� �����������.
  5. 13 ������� 2016 �.: �����̣� ������ RFC, ���������� ������������ �����������. ����� ������ �� ������������� ������������ � ��������� (���������������������) �������-�����������.
  6. 2 ������ 2015 �.: ��������� ���������� �� ��������� � TLS/SSL/������������� ������ ������, �������� � PKCS-�����������. ��������� ���������� �� ������� ������������ � Chrome, Windows, MSIE � Firefox.
  7. 28 ������� 2015 �.: �����̣� ������ RFC. ��������� ����������� ����������� ��������� ��������.
  8. 23 ������� 2015 �.: �����̣� ������ RFC. ��������� ���������� �� ����������, ������������ ��������� ������ ������ ��������� ClientHello. ��������� ���������� �� ������̣����� � RFC 7633 ���������� ���� » Pivate Internet», ����������� �������� � ���������� ���������� ����������� TLS, ��� �������� � �������������� ����. � �������� ���������� ����������� ��������� OID, ����� ����� ���� ��������� ����������� ���������� X.509 (�� ������������ 2.5.29) � ���������� «Private Internet» (�� ������������ 1.3.6.1.5.5.7.1). ����� �������� �����ݣ� (� ��������� ������������� � ���������� ��������).
  9. 29 �������� 2015 �.: �����̣� ������ RFC. � �������� ���������� TLS/SSL ��������� ���������� �� Extended Master Secret.
  10. 14 ���� 2015 �: �����̣� ������ RFC. ��������� ���������� �� ������ SSL v3.0.
  11. 10 ���� 2015 �: �����̣� ������ RFC. ��������� ���������� � ������������ Data Transmission Content Protection (DTCP) � �� ������������� � ��������� ����������� TLS (��� ���������� � RFC 7562).
  12. 30 ��� 2015 �.: �����̣� ������ RFC. ��������� ���������� �� ������̣���� � RFC 7507 «������ ������» TLS_FALLBACK_SCSV.
  13. 15 ����� 2015 �.: �����̣� ������ RFC.
  14. 5 ������ 2015 �.: ���������� ����� ������ �� ������ «������� ������������ X.509», ���������� �������� �������� ���� subjectPublicKeyInfo. ���������� �������� � �������� ���� subjectAltName ��� ���������� ������������� ������������� �������� dNSName.
  15. 4 ���� 2014 �.: ���������� �� ����ݣ���� ������� �����������, ������̣���� � RFC 7250, � ��������� ��������� ClientHello, ServerHello, ������� ����������� X.509 � �������� SubjectPublicKeyInfo. �����̣� ������ RFC.
  16. 21 ������ 2014 �.: ���������� � �������� ��������� ClientHello � ���������� Server Name Indication (SNI). �����̣� ������ RFC.
  17. 22 ������� 2013 �.: �����̣� ������ RFC.
  18. 18 ������� 2013 �.: �����̣� ������ RFC.
  19. ������ 2013 �.: �������� ���������� � HTML5
  20. ������ 2013 �.: ������� �������� �� �������� ����� � SSL/TLS �� TLS/SSL ��� ����������� ����������� ���������.
  21. ������ 2013 �.: �����̣� ������� 2.
  22. ������� 2013 �.: � ������ RFC ��������� RFC 7027 � 7030. �����̣� �����, ���������� ECC.

������


��������, �����������, �������������, ����������� (������� ����� ������) ��� ���� ��� ��������? ����������, �������� ����� � ������ ������� �����, ����� �������� ���, ���������� ��� � ������ ���������. ���������� ���� �� �����ģ�� � �������� ��������������.

����� ������ � ��������? �������� ������������!

Copyright © 1994-2017 ZyTrax, Inc. ��� ����� ��������. ��������� ��������� ��������: 26 ������ 2017 �.
���������� ����������� ������� Pro-LDAP.ru � 2013-2017 �.




  • By
    Служба поддержки SSL.com




  • 20 января 2023



  • Категории:

    Установка сертификата, S/MIME, Клиент и подписание документов, SSL /TLS

В 2023 году защита вашего сайта с помощью SSL /TLS сертификат больше не является обязательным, даже для предприятий, которые не имеют дела непосредственно с конфиденциальной информацией о клиентах в Интернете. Поисковые системы, такие как Google, используют безопасность сайта в качестве сигнала ранжирования SEO, а популярные веб-браузеры, такие как Chrome, предупреждают пользователей о веб-сайтах, которые не используют HTTPS:

Browser working for insecure website

Однако перспектива настройки ваших веб-серверов и приложений для использования SSL /TLS Правильный протокол может показаться сложной задачей, так как необходимо сделать множество сложных вариантов конфигурации и дизайна. В этом руководстве содержится краткий обзор основных моментов, которые следует учитывать при настройке SSL /TLS для вашего веб-сайта, уделяя особое внимание безопасности и производительности. Есть еще много чего, что нужно охватить только основами, поэтому мы разбили это на ряд шагов.

SSL.com предоставляет широкий выбор SSL/TLS сертификаты сервера. Защитите свой веб-сайт сегодня с помощью SSL-сертификата от SSL.com и построить доверительные отношения с вашими посетителями!

СРАВНИТЬ SSL /TLS СЕРТИФИКАТЫ

Выберите надежный центр сертификации (CA)

Ваши сертификаты заслуживают доверия ровно настолько, насколько их выдает ЦС. Все общедоступные центры сертификации проходят строгий сторонний аудит для поддержания своего положения в основных программах корневых сертификатов операционной системы и браузеров, но некоторые из них лучше поддерживают этот статус, чем другие. Найдите центр сертификации, который (например, SSL.com):

  • Делает большую часть своей деятельности в сфере общественного доверия PKI. Эти предприятия могут больше всего потерять, если обнаружатся плохие методы обеспечения безопасности, и все, что нужно, чтобы идти в ногу с развивающимися отраслевыми стандартами.
  • Эффективно и действенно реагирует на обнаружение уязвимостей, влияющих на безопасность и конфиденциальность пользователейтакие как общеотраслевой серийный номер энтропии выпуск в начале 2019 года. Поиск отраслевых форумов, таких как mozilla.dev.security.policy может дать вам хорошее представление о том, как конкретный ЦС реагирует на неприятности.
  • Предлагает полезные товары и услуги, например сертификаты с расширенной проверкой (EV), массовая / автоматическая выдача сертификатов через интуитивно понятный API (Программный интерфейс приложения) или Протокол ACME, простые службы управления жизненным циклом сертификатов и мониторинга, а также поддержка для интеграции с обширным списком сторонних решений.
  • Имеет репутацию отличного обслуживания клиентов и технической поддержки. Обеспечение безопасности веб-сайта вашей компании на 100% очень важно, и вам нужно иметь возможность связаться с настоящим экспертом по телефону, когда что-то пойдет не так.

Авторизация центра сертификации (CAA)

Авторизация центра сертификации (CAA) является стандартом для защиты веб-сайтов путем назначения определенных центров сертификации, которым разрешено выдавать сертификаты для доменного имени. После того, как вы выбрали центр сертификации, вы должны рассмотреть настройка записей CAA разрешить это.

Генерация и защита ваших личных ключей

Цена на SSL /TLS протокол использует пара ключей аутентифицировать личности и шифровать информацию, отправляемую через Интернет. Один из них ( Открытый ключ) предназначен для широкого распространения, а другой закрытый ключ) следует хранить как можно надежнее. Эти ключи создаются вместе, когда вы генерируете запрос на подпись сертификата (CSR), Вот несколько указаний, которые следует учитывать в отношении ваших личных ключей:

  • Используйте сильные личные ключи: Большие ключи труднее взломать, но они требуют больше вычислительных ресурсов. В настоящее время рекомендуется использовать как минимум 2048-битный ключ RSA или 256-битный ключ ECDSA, и большинство веб-сайтов могут обеспечить хорошую безопасность, оптимизируя производительность и удобство работы с этими значениями.
  • Защитите свои личные ключи:
    • Создайте свои собственные личные ключи в безопасной и надежной среде (предпочтительно на сервере, на котором они будут развернуты, или на устройстве, совместимом с FIPS или Common Criteria). Никогда разрешить CA (или кому-либо еще) создавать закрытые ключи от вашего имени. Авторитетный общедоступный центр сертификации, такой как SSL.com, никогда не предложит сгенерировать или обработать ваши закрытые ключи, если они не созданы в защищенном аппаратном токене или HSM и не подлежат экспорту.
    • Предоставляйте доступ к закрытым ключам только по мере необходимости. Генерация новых ключей и отзывать все сертификаты для старых ключей, когда сотрудники с доступом к закрытому ключу покидают компанию.
    • Обновляйте сертификаты как можно чаще (рекомендуется не реже одного раза в год), желательно каждый раз используя только что сгенерированный закрытый ключ. Инструменты автоматизации, такие как Протокол ACME полезны для планирования частого обновления сертификатов.
    • Если закрытый ключ был (или мог быть) скомпрометирован, отзывать все сертификаты для этого ключа, сгенерируйте новую пару ключей и выпустите новый сертификат для новой пары ключей.

Настройте свой сервер

На поверхности, установка SSL /TLS сертификат может показаться несложной операцией; тем не менее, по-прежнему необходимо принять множество решений по настройке, чтобы ваш веб-сервер был быстрым и безопасным, а конечные пользователи могли работать без ошибок и предупреждений браузера. Вот несколько указателей конфигурации, которые помогут вам при настройке SSL /TLS на ваших серверах:

  • Убедитесь, что все имена хостов включены: Ваш сертификат покрывает доменное имя вашего сайта как с, так и без www префикс? Есть ли Альтернативное имя субъекта (SAN) для каждого доменного имени сертификат предназначен для защиты?
  • Установите полные цепочки сертификатов: Конечный объект SSL /TLS сертификаты обычно подписываются промежуточными сертификатами, а не корневым ключом ЦС. Убедитесь, что на вашем веб-сервере установлены все промежуточные сертификаты, чтобы обеспечить браузерам полную путь сертификации и избегайте предупреждений и ошибок доверия для конечных пользователей. Ваш CA сможет предоставить вам любых необходимых посредников; Клиенты SSL.com могут использовать наши Промежуточный сертификат Скачать страница для получения промежуточных пакетов для многих серверных платформ.
  • Использовать текущий SSL /TLS Протоколы (TLS 1.2 или 1.3): В конце 2018 года все основные производители браузеров объявили о планах отказаться от TLS 1.0 и 1.1 к первой половине 2020 года. Google устарела TLS v1.0 и v1.1 в Chrome 72 (выпущено 30 января 2919 г.). В версиях Chrome 84 (выпущенных 14 июля 2020 г.) и более поздних версиях отображается промежуточное предупреждение для этих протоколов, и поддержка должна была быть прекращена. полностью удален в мае 2021 года. Широкая поддержка браузерами более ранних версий SSL /TLS версий, таких как SSL v3, давно нет. В то время как TLS 1.2 в настоящее время является наиболее широко используемой версией SSL /TLS протокол, TLS 1.3 (последняя версия) уже поддерживается в текущих версиях большинства основных веб-браузеров.
  • Используйте краткий список безопасных наборов шифров: Выбирайте только наборы шифров, которые предлагают как минимум 128-битное шифрование или более сильный, когда это возможно. Национальный институт стандартов и технологий (NIST) также рекомендует, чтобы все TLS реализации отходят от наборов шифров, содержащих шифр DES (или его варианты), к тем, которые используют AES. Наконец, использование лишь небольшого подмножества потенциально приемлемых комплектов шифров минимизирует поверхность атаки для еще не обнаруженных уязвимостей. Приложение SSL.com’s Руководство по TLS Соответствие стандартам предоставляет примеры конфигураций для наиболее популярных платформ веб-серверов, используя TLS 1.2

    Примечание: Использование небезопасных устаревших шифров (таких как RC4) может привести к ошибкам безопасности браузера, таким как ERR_SSL_VERSION_OR_CIPHER_MISMATCH в Google Chrome.

  • Используйте Forward Secrecy (FS): Также известный под названием совершенная прямая секретность (PFS)FS гарантирует, что скомпрометированный закрытый ключ также не скомпрометирует прошлые сеансовые ключи. Чтобы включить FS:
    • Настроить TLS 1.2 использовать алгоритм обмена ключами Диффи-Хеллмана по эллиптической кривой (EDCHE) (с DHE в качестве запасного варианта) и по возможности полностью избегайте обмена ключами RSA.
    • Используйте TLS 1.3. TLS 1.3 обеспечивает прямую секретность для всех TLS сеансы через Эфемерный Диффи-Хеллман (EDH или DHE) протокол обмена ключами.
  • Включите TLS Возобновление сеанса: Аналогично использованию keepalive для поддержки постоянных TCP-соединений, TLS возобновление сеанса позволяет вашему веб-серверу отслеживать недавно согласованные SSL /TLS сеансов и возобновить их, минуя вычислительные издержки согласования ключа сеанса.
  • Рассмотрим сшивание OCSP: Сшивание OCSP позволяет веб-серверам доставлять кэшированную информацию об отзыве напрямую клиенту, что означает, что браузеру не нужно будет связываться с сервером OCSP, чтобы проверить, не был ли отозван сертификат веб-сайта. Устраняя этот запрос, сшивание OCSP предлагает реальный прирост производительности. Для получения дополнительной информации прочтите нашу статью, Оптимизация загрузки страницы: сшивание OCSP.

Используйте лучшие практики для дизайна веб-приложений

При разработке веб-приложений с учетом требований безопасности так же важно, как и правильно настроить сервер. Это наиболее важные моменты, позволяющие убедиться, что ваши пользователи не подвергаются Человек в середине атаки, и что ваше приложение получает преимущества SEO, связанные с хорошими методами обеспечения безопасности:

  • Устранить смешанный контент: Файлы JavaScript, изображения и файлы CSS должны все доступ через SSL /TLS. Как указано в статье SSL.com, HTTPS Everywhere, служа смешанный контент больше не является приемлемым способом повышения производительности сайта и может привести к предупреждению безопасности браузера и проблемам с SEO.
  • Используйте безопасные файлы cookie: Настройка Secure Флаг в cookie-файлах обеспечит передачу по защищенным каналам (например, HTTPS). Вы также можете запретить клиентскому JavaScript доступ к файлам cookie через HttpOnly помечать и ограничивать межсайтовое использование файлов cookie с помощью SameSite флаг.
  • Оцените сторонний код: Убедитесь, что вы понимаете потенциальные риски использования сторонних библиотек на вашем веб-сайте, такие как возможность непреднамеренного внедрения уязвимостей или вредоносного кода. Всегда проверяйте надежность сторонних поставщиков в меру своих возможностей и связывайтесь со всем сторонним кодом с помощью HTTPS. Наконец, убедитесь, что ваша выгода от любых сторонних элементов на вашем веб-сайте стоит риска.

Проверьте свою работу с помощью диагностических инструментов

После настройки SSL /TLS на вашем сервере и веб-сайте или при внесении каких-либо изменений в конфигурацию, важно убедиться, что все настроено правильно и ваша система находится в безопасности. Доступны многочисленные диагностические инструменты для проверки SSL /TLS. Например, SSL Shopper’s Проверка SSL сообщит вам, правильно ли установлен ваш сертификат, когда он истечет, и отобразит сертификат сертификата цепь доверия.

Доступны другие онлайн-инструменты и приложения, которые будут сканировать ваш сайт на наличие проблем безопасности, таких как смешанный контент. Вы также можете проверить смешанный контент с помощью веб-браузера с помощью встроенных инструментов разработчика:

mixed content warning

Предупреждение о смешанном содержимом в консоли Chrome

Какие бы инструменты вы ни выбрали, также важно установить график проверки вашего SSL /TLS установка и настройка. Ваш CA также может помочь вам в этом; например, для удобства наших клиентов SSL.com предоставляет автоматические уведомления о приближающемся истечении срока действия сертификата.

Внедрение строгой транспортной безопасности HTTP (HSTS)

HTTP Strict Transport Security (HSTS) — это механизм политики безопасности, который помогает защитить веб-сайты от атак с понижением версии протокола и перехвата файлов cookie. Это позволяет веб-серверам объявлять, что веб-браузеры (или другие соответствующие пользовательские агенты) должны взаимодействовать с ним только с использованием безопасных соединений HTTPS и никогда через небезопасный протокол HTTP. Эта политика передается сервером пользовательскому агенту через поле заголовка ответа HTTP с именем «Strict-Transport-Security».

  1. Убедитесь, что ваш сайт поддерживает HTTPS: перед включением HSTS ваш сайт должен иметь действующую SSL сертификат и иметь возможность обслуживать контент через HTTPS. Если ваш сайт еще не настроен для HTTPS, вам необходимо получить SSL-сертификат и настройте свой сервер для его использования.
Заголовок всегда устанавливает Strict-Transport-Security "max-age=31536000; includeSubDomains"

Эта строка указывает браузеру всегда использовать HTTPS для вашего сайта в течение следующего года (31,536,000 XNUMX XNUMX секунд), включая все субдомены.

  1. Проверьте свою конфигурацию: После добавления заголовка HSTS вы должны протестировать свой сайт, чтобы убедиться, что он работает правильно. Вы можете сделать это, посетив свой сайт и используя инструменты разработчика вашего браузера для проверки заголовков ответа. Вы должны увидеть заголовок Strict-Transport-Security со значением, которое вы установили.
  2. Попробуйте добавить свой сайт в список предварительной загрузки HSTS.: список предварительной загрузки HSTS — это список сайтов, которые жестко запрограммированы в браузерах как поддерживающие HSTS. Это обеспечивает дополнительный уровень защиты, поскольку гарантирует, что первое подключение к вашему сайту будет безопасным, даже до получения заголовка HSTS. Вы можете отправить свой сайт в список предварительной загрузки HSTS на сайте hstspreload.org.

Кейсы: Новостной веб-сайт хочет, чтобы его пользователи всегда безопасно подключались к нему, даже если они случайно набрали «http» вместо «https» в URL-адресе. Веб-сайт использует HSTS, добавляя заголовок Strict-Transport-Security в конфигурацию своего сервера, устанавливая длинный максимальный возраст и включая все субдомены. Это говорит пользовательским агентам всегда подключаться к нему с помощью HTTPS, защищая пользователей от атак, которые пытаются понизить соединение до HTTP и украсть их файлы cookie. Веб-сайт также отправляет себя в список предварительной загрузки HSTS для дополнительной защиты.

Реализовать привязку открытого ключа HTTP (HPKP)

Закрепление открытого ключа HTTP (HPKP) — это функция безопасности, позволяющая веб-серверу связывать определенный криптографический открытый ключ с самим собой, чтобы предотвратить атаки «человек посередине» (MITM) с поддельными сертификатами.

Вот краткий обзор того, как он использовался:

  1. Создание информации о закреплении: Первым шагом в реализации HPKP было создание информации о закреплении. Это включало создание криптографического хэша открытого ключа сертификата или открытого ключа промежуточного или корневого сертификата.
  2. Настройка веб-сервера: Следующим шагом была настройка веб-сервера для включения HTTP-пины с открытым ключом заголовок в ответах. Этот заголовок включал хэши открытых ключей («булавки»), время жизни (как долго браузер должен помнить информацию) и, возможно, URI отчета (куда браузер будет отправлять отчеты об ошибках проверки булавки).
  3. Обработка ошибок проверки PIN-кода: если браузер, поддерживающий HPKP, получил цепочку сертификатов, которая не включала хотя бы один из закрепленных открытых ключей, он считал соединение ненадежным. Если был указан URI отчета, браузер также отправил бы отчет о сбое на этот URI.

Однако из-за риска неправильного использования и потенциальной возможности вызвать отказ в обслуживании HPKP устарел в большинстве браузеров и больше не является рекомендуемой практикой. Неправильная настройка HPKP может привести к тому, что веб-сайт станет недоступным.

Кейсы: В прошлом технологическая компания использовала HPKP для закрепления своих открытых ключей на своих серверах. Это гарантировало, что если центр сертификации (ЦС) будет скомпрометирован и сертификат будет ошибочно выдан для их домена, браузеры не будут ему доверять, если у него также не будет открытого ключа, совпадающего с одним из закрепленных ключей. Однако им нужно было быть очень осторожными, чтобы не потерять доступ к закрепленным ключам, что сделало бы их сайт недоступным. Они также должны были убедиться, что у них есть процесс смены булавок до истечения срока их действия, чтобы их сайт не был недоступен для пользователей с кэшированной информацией о пинах.

SSL.com предоставляет широкий выбор SSL/TLS сертификаты сервера. Защитите свой веб-сайт сегодня с помощью SSL-сертификата от SSL.com и построить доверительные отношения с вашими посетителями!

СРАВНИТЬ SSL /TLS СЕРТИФИКАТЫ

Используйте TLS Резервный SCSV для предотвращения атак с понижением версии протокола

TLS Резервный SCSV (Значение набора шифров сигнализации) — это механизм, который был введен для предотвращения атак с понижением версии протокола. Эти атаки происходят, когда злоумышленник вмешивается в процесс установки соединения и обманом заставляет клиент и сервер использовать менее безопасную версию протокола, чем они оба фактически поддерживают.

Вот как вы можете реализовать TLS Резервный SCSV:

  1. Обновите SSL вашего сервера/TLS Библиотека: первый шаг — убедиться, что SSL/TLS библиотека поддерживает TLS Резервный SCSV. Эта функция была представлена ​​в OpenSSL 1.0.1j, 1.0.0o и 0.9.8zc. Если вы используете другой SSL/TLS библиотеку, проверьте ее документацию или свяжитесь с ее разработчиками.
  2. Настройте свой сервер: Как только ваш сервер SSL/TLS библиотека поддерживает TLS Резервный SCSV, вам может потребоваться настроить сервер для его использования. Точные шаги будут зависеть от вашего серверного программного обеспечения. Например, в Apache вам может понадобиться добавить или изменить строку в файле конфигурации следующим образом:
Протокол SSL Все -SSLv2 -SSLv3

Эта строка указывает серверу использовать все версии протокола, кроме SSLv2 и SSLv3. Если и клиент, и сервер поддерживают TLS 1.2, но клиент пытается использовать TLS 1.1 (возможно, из-за вмешательства злоумышленника), сервер распознает это как попытку отката и отклонит соединение.

  1. Протестируйте свой сервер: После настройки вашего сервера вы должны протестировать его, чтобы убедиться, что он правильно реализует TLS Резервный SCSV. В этом вам могут помочь различные онлайн-инструменты, такие как SSL Labs Server Test.

Кейсы: глобальная корпорация использует TLS Резервный SCSV для защиты внутренних коммуникаций. Это гарантирует, что если злоумышленник попытается принудительно понизить версию протокола, сервер распознает это и отклонит соединение, защищая конфиденциальные данные корпорации. IT-команда корпорации регулярно обновляет SSL/TLS библиотеки и конфигурации, чтобы гарантировать, что они используют новейшие функции безопасности, и они используют онлайн-инструменты для тестирования своих серверов и подтверждения того, что они правильно реализуют TLS Резервный SCSV.

Избегайте проблем со смешанным содержимым

Смешанный контент — это угроза безопасности, возникающая, когда веб-страница, загружаемая через безопасное соединение HTTPS, включает ресурсы, такие как изображения, видео, таблицы стилей или сценарии, которые загружаются через небезопасное соединение HTTP. Браузеры могут блокировать этот смешанный контент или отображать предупреждение для пользователя, что может нанести ущерб восприятию пользователем безопасности сайта.

Вот как можно избежать проблем со смешанным содержимым:

  1. Используйте HTTPS для всех ресурсов: Самый простой способ избежать смешанного контента — убедиться, что все ресурсы на вашем сайте загружаются через HTTPS. Сюда входят изображения, сценарии, таблицы стилей, iframe, запросы AJAX и любые другие ресурсы, которые использует ваш сайт.
  2. Обновите код вашего сайта: если код вашего сайта содержит жестко заданные URL-адреса HTTP для ресурсов, вам необходимо обновить их, чтобы вместо этого использовать HTTPS. Если ресурс размещен на сервере, который не поддерживает HTTPS, вам может потребоваться разместить ресурс на собственном сервере или найти альтернативный ресурс, который можно загрузить через HTTPS.
  3. Настройте свой сервер для отправки заголовка Content-Security-Policy: HTTP-заголовок Content-Security-Policy (CSP) позволяет вам контролировать, какие ресурсы разрешено загружать вашему сайту. Установив заголовок CSP, разрешающий только ресурсы HTTPS, вы можете гарантировать, что ваш сайт не будет случайно содержать смешанный контент.

Кейсы: онлайн-журнал гарантирует, что весь контент, включая изображения и сценарии, загружается через HTTPS. Это не позволяет злоумышленникам вмешиваться в эти ресурсы и потенциально внедрять вредоносный контент. Веб-разработчики журнала регулярно проверяют код сайта, чтобы убедиться, что все ресурсы загружаются через HTTPS, и настраивают свой сервер для отправки строгого заголовка Content-Security-Policy. Они также используют онлайн-инструменты для сканирования своего сайта на наличие проблем со смешанным содержимым и исправления найденных.

Используйте указание имени сервера (SNI) для размещения нескольких сайтов

Индикация имени сервера (SNI) является продолжением TLS протокол, который позволяет серверу предоставлять несколько сертификатов на один и тот же IP-адрес и номер порта. Это особенно полезно для провайдеров веб-хостинга, которым необходимо разместить несколько защищенных веб-сайтов, каждый со своим собственным сертификатом SSL, на одном сервере.

Вот как вы можете использовать SNI:

  1. Убедитесь, что ваше серверное программное обеспечение поддерживает SNI: Первый шаг — убедиться, что программное обеспечение вашего сервера поддерживает SNI. Большинство современных веб-серверов, включая Apache, Nginx и IIS, поддерживают SNI.
  2. Настройте свой сервер: Следующим шагом будет настройка вашего сервера на использование SNI. Обычно это включает в себя добавление отдельного блока конфигурации для каждого сайта, который вы хотите разместить на сервере, и указание SSL сертификат использовать для каждого сайта. Точные шаги будут зависеть от вашего серверного программного обеспечения.
  3. Проверьте свою конфигурацию: После настройки вашего сервера вы должны протестировать его, чтобы убедиться, что он правильно использует SNI. Вы можете сделать это, посетив каждый сайт, который вы размещаете на сервере, и проверив, используется ли правильный сертификат SSL.

Кейсы: Хостинг-провайдер использует SNI для обслуживания нескольких веб-сайтов с одного и того же IP-адреса. Это позволяет им эффективно использовать пространство IP-адресов и упростить настройку сети. Они настраивают свой сервер на использование разных SSL-сертификатов для каждого сайта и регулярно проверяют свою конфигурацию, чтобы убедиться, что для каждого сайта используется правильный сертификат. Это гарантирует, что каждый сайт имеет безопасное и надежное соединение, даже если все они обслуживаются с одного и того же IP-адреса.

Оптимизация производительности с возобновлением сеанса

Возобновление сеанса является функцией TLS протокол, который позволяет клиенту и серверу использовать одни и те же ключи шифрования в нескольких сеансах, уменьшая накладные расходы на установление каждый раз нового безопасного соединения. Это может значительно повысить производительность, особенно для приложений, в которых клиент часто отключается и снова подключается.

 Вот как вы можете использовать возобновление сеанса:

  1. Убедитесь, что ваше серверное программное обеспечение поддерживает возобновление сеанса: первый шаг — убедиться, что ваше серверное программное обеспечение поддерживает возобновление сеанса. Большинство современных веб-серверов, включая Apache, Nginx и IIS, поддерживают эту функцию.
  2. Настройте свой сервер: Следующим шагом является настройка вашего сервера для использования возобновления сеанса. Обычно это включает в себя включение кэша сеанса и установку значения времени ожидания для кэша. Точные шаги будут зависеть от вашего серверного программного обеспечения.
  3. Проверьте свою конфигурацию: После настройки вашего сервера вы должны протестировать его, чтобы убедиться, что он правильно использует возобновление сеанса. Вы можете сделать это, установив TLS подключение к вашему серверу, отсоединение, а затем повторное подключение. Если возобновление сеанса работает правильно, второе соединение должно устанавливаться быстрее, чем первое.

Кейсы: мобильное приложение использует возобновление сеанса для поддержания быстрого и безопасного соединения. Это особенно полезно, когда приложение используется в районах с нестабильным покрытием сети, поскольку позволяет приложению быстро восстановить безопасное соединение после обрыва. Разработчики приложения настраивают свой сервер для использования возобновления сеанса и регулярно тестируют эту функцию, чтобы убедиться, что она работает правильно. Это гарантирует, что приложение может обеспечить быструю и бесперебойную работу для пользователей даже в сложных условиях сети.

Обеспечение действительности сертификата с помощью сшивания OCSP

Сшивание протокола статуса онлайн-сертификата (OCSP) — это метод повышения производительности SSL/TLS при сохранении безопасности соединения. Это позволяет серверу получать текущий статус своих собственных сертификатов от Центра сертификации (ЦС), а затем доставлять этот статус клиентам во время TLS рукопожатие.

Вот как вы можете реализовать сшивание OCSP:

  1. Убедитесь, что ваше серверное программное обеспечение поддерживает сшивание OCSP: первый шаг — убедиться, что программное обеспечение вашего сервера поддерживает сшивание OCSP. Большинство современных веб-серверов, включая Apache, Nginx и IIS, поддерживают эту функцию.
  2. Настройте свой сервер: Следующим шагом будет настройка сервера для использования сшивания OCSP. Обычно это включает в себя включение этой функции в SSL/TLS конфигурация и указание расположения сервера для хранения ответов OCSP. Точные шаги будут зависеть от вашего серверного программного обеспечения.
  3. Проверьте свою конфигурацию: После настройки сервера необходимо протестировать его, чтобы убедиться, что он правильно использует сшивание OCSP. Вы можете сделать это, установив TLS подключение к вашему серверу и проверка того, что сервер включает ответ OCSP в TLS рукопожатие.

Кейсы: Интернет-магазин использует сшивание OCSP для быстрой проверки статуса своего SSL-сертификата. Это гарантирует, что клиенты всегда имеют безопасное соединение и могут быть уверены в безопасности своих данных. ИТ-команда розничного продавца настраивает свой сервер для использования сшивания OCSP и регулярно тестирует эту функцию, чтобы убедиться, что она работает правильно. Это помогает поддерживать доверие своих клиентов и защищать их конфиденциальные данные.

Отключить TLS Сжатие для смягчения криминальной атаки

TLS сжатие — это функция, которая может повысить производительность SSL/TLS за счет уменьшения объема данных, которые необходимо отправить по сети. Однако это также может сделать соединение уязвимым для атаки CRIME (Compression Ratio Info-leak Made Easy), которая может позволить злоумышленнику сделать вывод о содержимом зашифрованного трафика.

Вот как вы можете отключить TLS сжатие: 

  1. Убедитесь, что ваше серверное программное обеспечение поддерживает отключение TLS компрессия: первый шаг — убедиться, что программное обеспечение вашего сервера поддерживает отключение TLS сжатие. Большинство современных веб-серверов, включая Apache, Nginx и IIS, поддерживают эту функцию.
  2. Настройте свой сервер: Следующим шагом является настройка вашего сервера для отключения TLS сжатие. Точные шаги будут зависеть от вашего серверного программного обеспечения. Например, в Apache вы можете добавить в файл конфигурации такую ​​строку:
SSLCompression выключен

Эта строка указывает серверу не использовать сжатие для SSL/TLS соединений.

  1. Проверьте свою конфигурацию: После настройки вашего сервера вы должны протестировать его, чтобы убедиться, что он правильно отключает TLS сжатие. Вы можете сделать это, установив TLS подключение к вашему серверу и проверка того, что соединение не использует сжатие.

Кейсы: Финансовое учреждение отключает TLS сжатия на своих серверах для защиты от атаки CRIME. Это помогает обеспечить конфиденциальность конфиденциальных финансовых данных, таких как номера счетов и сведения о транзакциях. ИТ-команда учреждения настраивает свои серверы для отключения TLS сжатие, и они регулярно тестируют серверы, чтобы убедиться, что они правильно реализуют эту меру безопасности. Это помогает защитить клиентов заведения и сохранить их доверие.

Осуществлять TLS Сессионные билеты правильно

TLS Билеты на сеансы являются особенностью TLS протокол, который может повысить производительность, позволяя клиенту и серверу возобновить предыдущий сеанс без необходимости выполнять полное рукопожатие. Однако их необходимо правильно реализовать, чтобы избежать потенциальных проблем с безопасностью.

Вот как можно правильно реализовать TLS билеты на сеанс:

  1. Убедитесь, что ваше серверное программное обеспечение поддерживает TLS Билеты на сеанс: первый шаг — убедиться, что ваше серверное программное обеспечение поддерживает TLS билеты на сеанс. Большинство современных веб-серверов, включая Apache, Nginx и IIS, поддерживают эту функцию.
  2. Настройте свой сервер: Следующим шагом будет настройка вашего сервера для использования TLS билеты на сеанс. Обычно это включает в себя включение этой функции в SSL/TLS конфигурация. Точные шаги будут зависеть от вашего серверного программного обеспечения.
  3. Используйте уникальные ключи сеансовых билетов: чтобы предотвратить потенциальные проблемы с безопасностью, каждый сервер должен использовать уникальный ключ билета сеанса. Если вы используете балансировщик нагрузки, вы должны настроить его для распределения клиентов на основе их билета сеанса, а не разрешать клиентам использовать билет сеанса, выданный одним сервером, для установления сеанса с другим сервером.
  4. Регулярно меняйте ключи сеансовых билетов: для дальнейшего повышения безопасности вам следует регулярно менять ключи сеансовых билетов. Часто это можно автоматизировать с помощью серверного программного обеспечения или отдельной системы управления ключами.

Кейсы: крупная технологическая компания с несколькими серверами гарантирует, что каждый сервер использует уникальный ключ билета сеанса. Это не позволяет злоумышленнику использовать билет сеанса с одного сервера для олицетворения пользователя на другом сервере. ИТ-команда компании настраивает свои серверы для использования TLS сеансовые билеты, и они установили систему для регулярной ротации ключей сеансовых билетов. Они также настраивают свой балансировщик нагрузки для распределения клиентов на основе их билета сеанса, что еще больше повышает безопасность их системы.

Включить безопасное повторное согласование

Безопасное повторное согласование — это функция SSL/TLS протоколы, которые позволяют клиенту или серверу запрашивать новый TLS рукопожатие в середине сеанса. Это может быть полезно по разным причинам, например, для обновления ключей шифрования или изменения уровня шифрования. Однако, если он не обрабатывается безопасным образом, злоумышленник может использовать его для внедрения открытого текста в зашифрованную связь.

Вот как вы можете включить безопасное повторное согласование:

  1. Убедитесь, что ваше серверное программное обеспечение поддерживает безопасное повторное согласование: первый шаг — убедиться, что ваше серверное программное обеспечение поддерживает безопасное повторное согласование. Большинство современных веб-серверов, включая Apache, Nginx и IIS, поддерживают эту функцию.
  2. Настройте свой сервер: Следующим шагом является настройка вашего сервера для использования безопасного повторного согласования. Обычно это включает в себя включение этой функции в SSL/TLS конфигурация. Точные шаги будут зависеть от вашего серверного программного обеспечения.
  3. Проверьте свою конфигурацию: После настройки вашего сервера вы должны протестировать его, чтобы убедиться, что он правильно использует безопасное повторное согласование. Вы можете сделать это, установив TLS подключение к вашему серверу, а затем попытка повторного согласования подключения.

Кейсы: Платформа социальных сетей обеспечивает безопасное повторное согласование для защиты пользовательских данных. Это не позволяет злоумышленнику внедрить вредоносный контент в зашифрованную связь между пользователем и сервером. ИТ-команда платформы настраивает свои серверы для использования безопасного повторного согласования и регулярно тестирует серверы, чтобы убедиться, что они правильно реализуют эту меру безопасности. Это помогает защитить пользователей платформы и сохранить их доверие.

Отключить инициированное клиентом повторное согласование для предотвращения DoS-атак

Инициированное клиентом повторное согласование является функцией SSL/TLS протоколы, которые позволяют клиенту запрашивать новый TLS рукопожатие в середине сеанса. Однако если злоумышленник может заставить сервер постоянно пересматривать сеансы, это может привести к чрезмерному потреблению ресурсов и потенциально привести к атаке типа «отказ в обслуживании» (DoS).

Вот как можно отключить повторное согласование, инициированное клиентом:

  1. Убедитесь, что ваше серверное программное обеспечение поддерживает отключение повторного согласования, инициированного клиентом: первый шаг — убедиться, что ваше серверное программное обеспечение поддерживает отключение повторного согласования, инициируемого клиентом. Большинство современных веб-серверов, включая Apache, Nginx и IIS, поддерживают эту функцию.
  2. Настройте свой сервер: Следующим шагом является настройка сервера на отключение повторного согласования, инициируемого клиентом. Обычно это включает в себя добавление директивы в SSL/TLS конфигурация. Точные шаги будут зависеть от вашего серверного программного обеспечения.
  3. Проверьте свою конфигурацию: После настройки вашего сервера вы должны протестировать его, чтобы убедиться, что он правильно отключает повторное согласование, инициированное клиентом. Вы можете сделать это, установив TLS подключение к вашему серверу, а затем попытка повторного согласования подключения. Если сервер правильно отклоняет запрос на повторное согласование, значит, он правильно настроен.

Кейсы: игровая онлайн-платформа отключает инициированное клиентом повторное согласование для защиты от потенциальных DoS-атак. Это помогает гарантировать, что платформа останется доступной для пользователей даже перед лицом потенциальных атак. ИТ-команда платформы настраивает свои серверы для отключения повторного согласования, инициированного клиентом, и регулярно тестирует серверы, чтобы убедиться, что они правильно реализуют эту меру безопасности. Это помогает защитить пользователей платформы и сохранить их доверие.

Будьте в курсе новых уязвимостей

Веб-безопасность — это постоянно меняющаяся цель, и вы всегда должны быть готовы к следующей атаке и незамедлительно применять исправления безопасности на своем сервере. Это означает, что нужно читать и оставаться в курсе того, что грядет в области информационной безопасности, а также следить за обновлениями программного обеспечения, особенно критически важными. Сайт SSL.com (где вы читаете это прямо сейчас) — отличный источник, чтобы быть в курсе последних событий по SSL /TLS и информационная безопасность.

Но что насчет…?

Если вы хотите узнать больше о любой из тем, затронутых в этом руководстве, и узнать о новых проблемах и технологиях по мере их возникновения, вы можете начать с просмотра и поиска SSL.com База знаний, который мы обновляем еженедельно с новыми разработками в области SSL /TLS и PKI, Вы также можете в любое время связаться с нашей службой поддержки по электронной почте на Support@SSL.com, по телефону 1-877-SSL-Secure, или нажав ссылку чата в правом нижнем углу этой страницы.

Получите экспертную консультацию по SSL-сертификатам.
Заполните форму для консультации.

Время на прочтение
12 мин

Количество просмотров 9.6K

SSL/TLS — обманчиво простая технология. Его легко развернуть и он просто работает, за исключением случаев, когда это не так. Основная проблема заключается в том, что правильно развернуть шифрование непросто. Чтобы гарантировать работоспособность TLS и обеспечение необходимой безопасности, системным администраторам и разработчикам необходимо прикладывать дополнительные усилия для правильной настройки серверов и разработки приложений.

Этот документ является шагом к решению проблемы нехватки документации в области использования SSL/TLS. Основная задача — предоставить четкие и краткие инструкции, которые помогут администраторам и программистам сэкономить время на развертывание защищенного сайта или веб-приложения. Для сохранения ясности в стороне останутся некоторые сложные схемы и излишние реализации. Основное внимание уделяется практическим советам, которым легко следовать.

Закрытый ключ и сертификат

В TLS вся безопасность начинается с криптографической идентификации сервера; надежный закрытый ключ необходим, чтобы злоумышленники не могли выполнять атаки подмены автора (impersonation attacks). Не менее важно иметь действующий и надежный сертификат, который удостоверяет подлинность закрытого ключа и/или принадлежность закрытого ключа конкретному имени хоста. Без этих двух фундаментальных строительных блоков ничто другое не может быть безопасным.

1. Используйте 2048-битные закрытые ключи

Для большинства веб-сайтов достаточно безопасности, обеспечиваемой 2048-битными ключами RSA. Алгоритм открытого ключа RSA широко поддерживается, что делает ключи этого типа безопасным выбором по умолчанию. При длине 2048 бит такие ключи обеспечивают около 112 бит безопасности. Если вам нужны более стойкие ключи RSA, вы можете увеличить битность ключа, но обратите внимание, что это снизит производительность шифрования. Например, чтобы получить 128-битную безопасность, вам нужны 3072-битные ключи RSA, которые заметно медленнее.

Ключи ECDSA представляют собой альтернативу, обеспечивающую лучшую безопасность и производительность. 256-битные ключи ECDSA обеспечивают 128-бит безопасности. Некоторые старые клиенты не поддерживает ключи ECDSA, но современные клиенты поддерживают. Можно получить лучшее от обоих решений и одновременно развернуть ключи RSA и ECDSA, если накладные расходы по управлению такой настройкой не будут слишком велики.

2. Защита закрытых ключей

Относитесь к своим закрытым ключам как к важному активу, ограничивая доступ для минимально возможной группы сотрудников. Рекомендуемые политики включают следующее:

  • Сгенерируйте закрытые ключи на доверенном компьютере с достаточной энтропией. Некоторые центры сертификации предлагают сгенерировать для вас закрытые ключи — не используйте такую функциональность.

  • Защищайте ключи паролем с самого момента генерации, чтобы предотвратить компрометацию ключей при их хранении в системах резервного копирования. Пароль на закрытый ключ слабо защищает в работающих информационных системах, потому что знающий злоумышленник всегда может получить ключи из памяти процесса. Существуют аппаратные устройства (называемые аппаратными модулями безопасности или HSM), которые могут защитить закрытые ключи даже в случае компрометации сервера, но они дороги и поэтому оправданы только для организаций со строгими требованиями безопасности.

  • После взлома отзовите старые сертификаты и сгенерируйте новые ключи.

  • Обновляйте сертификаты ежегодно или чаще, если вы можете автоматизировать этот процесс. Большинство сайтов должны исходить из того, что скомпрометированный сертификат невозможно надежно отозвать; поэтому сертификаты с более коротким сроком действия на практике более безопасны.

  • Если сохранение одних и тех же ключей не важно для закрепления открытого ключа, вам также следует генерировать новые закрытые ключи всякий раз, когда вы получаете новый сертификат.

3. Обеспечьте в сертификате достаточное покрытие имен хостов

Убедитесь, что ваши сертификаты охватывают все имена, которые вы хотите использовать на сайте. Ваша цель — избежать предупреждений о недействительном сертификате, которые сбивают с толку пользователей и подрывают их доверие.

Даже если вы планируете использовать только одно доменное имя, помните, что вы не можете контролировать, как ваши пользователи попадают на сайт или как другие ссылаются на него. В большинстве случаев следует убедиться, что сертификат работает как с префиксом www, так и без него (например, работает как для example.com, так и для www.example.com). Эмпирическое правило заключается в том, что безопасный веб-сервер должен иметь сертификат, действительный для каждого DNS-имени, сконфигурированного для указания на него.

Подстановочные сертификаты имеют свое применение, но избегайте их использования, если это означает раскрытие базовых ключей гораздо большей группе людей, особенно если это выходит за рамки команды или отдела. Другими словами, чем меньше людей имеют доступ к закрытым ключам, тем лучше. Также имейте в виду, что совместное использование сертификатов создает связь, которой можно злоупотреблять для передачи уязвимостей с одного веб-сайта или сервера на все другие сайты и серверы, использующие один и тот же сертификат (даже если лежащие в основе закрытые ключи отличаются).

Убедитесь, что вы добавили все необходимые доменные имена в альтернативное имя субъекта (SAN), так как все последние версии браузеров не проверяют общее имя для проверки.

4. Получение сертификатов от надежного ЦС

Выберите центр сертификации (ЦС), который является надежным и серьезно относится к своему бизнесу сертификатов и безопасности. При выборе центра сертификации учитывайте следующие критерии:

  • Уровень безопасности. Все центры сертификации проходят регулярные проверки, но некоторые из них более серьезно относятся к безопасности, чем другие. Выяснить, какие из них лучше в этом отношении, непросто, но один из вариантов — изучить их историю безопасности и, что более важно, как они реагировали на компрометацию и извлекли ли они уроки из своих ошибок.

  • Фокус на бизнес. Центры сертификации, ориентированные на бизнес, чья деятельность составляет значительную часть их бизнеса, могут потерять все, если что-то пойдет не так, и они, вероятно, не будут пренебрегать своим разделением сертификатов, преследуя потенциально более прибыльные возможности в другом месте.

  • Предлагаемые услуги. Как минимум, выбранный вами ЦС должен обеспечивать поддержку как работу как со списком отзыва сертификатов (CRL), так и протокол состояния сетевого сертификата (OCSP) с надежной сетевой доступностью и производительностью. Многие сайты довольны сертификатами с проверкой домена, но вам также следует подумать, потребуются ли вам когда-либо сертификаты с расширенной проверкой (EV). В любом случае у вас должен быть выбор алгоритма открытого ключа. Сегодня большинство веб-сайтов используют RSA, но ECDSA может стать важным в будущем из-за его преимуществ в производительности.

  • Варианты управления сертификатами. Если вам нужно большое количество сертификатов, и вы работаете в сложной среде, выберите ЦС, который предоставит вам хорошие инструменты для управления ими.

  • Поддержка. Выберите ЦС, который предоставит вам хорошую поддержку, когда она вам понадобится.

Примечание

Для наилучших результатов приобретайте сертификаты заблаговременно и как минимум за неделю до их развертывания в рабочей среде. Эта практика помогает избежать предупреждений о сертификатах для некоторых пользователей, имеющих неверное время на своих компьютерах, и помогает избежать неудачных проверок отзыва с центрами сертификации, которым требуется дополнительное время чтобы распространить новые сертификаты как действительные для своих ответчиков OCSP.

Со временем постарайтесь продлить этот период «разогрева» до 1-3 месяцев. Точно так же не ждите, пока истечет срок действия ваших сертификатов, чтобы заменить их. Оставление дополнительных нескольких месяцев таким же образом помогло бы людям, чьи часы неверны в другом направлении.

5. Используйте надежные алгоритмы подписи сертификата

Безопасность сертификата зависит от надежности закрытого ключа, который использовался для подписи сертификата, и от надежности хэш-функции, используемой в подписи. До недавнего времени большинство сертификатов основывались на хеш-функции SHA1, которая сейчас считается небезопасной. В результате мы в настоящее время переходим на SHA256. С 2016 года вы не сможете получить сертификат SHA1 от общедоступного центра сертификации. Конечные и промежуточные сертификаты, имеющие хэш-подпись SHA1, теперь считаются небезопасными для браузера.

6. Используйте DNS-запись CAA

DNS CAA — это стандарт, который позволяет владельцам доменных имен ограничивать, какие ЦС могут выдавать сертификаты для своих доменов. В сентябре 2017 года CA/Browser Forum обязал центры сертификации поддерживать его в рамках своих стандартных базовых требований к выдаче сертификатов. Благодаря внедрению CAA снижается поверхность атаки для мошеннических сертификатов, что делает сайты более безопасными. Если центры сертификации имеют автоматизированный процесс выдачи сертификатов, то он должен проверять запись DNS CAA, поскольку это уменьшит неправомерную выдачу сертификатов. Рекомендуется внести центр сертификации в белый список, добавив запись CAA для вашего сертификата. Добавьте ЦС, которым вы доверяете для выдачи вам сертификата.

Конфигурация

При правильной настройке сервера TLS вы гарантируете, что ваши учетные данные должным образом представлены посетителям сайта, что используются только безопасные криптографические примитивы и что все известные уязвимости устранены.

1. Используйте полные цепочки сертификатов

В большинстве развертываний одного сертификата сервера недостаточно; два или более сертификата необходимы для построения полной цепочки доверия. Распространенная проблема с конфигурацией возникает при развертывании сервера с действующим сертификатом, но без всех необходимых промежуточных сертификатов. Чтобы избежать этой ситуации, просто используйте все сертификаты, предоставленные вам вашим центром сертификации, в той же последовательности.

Недопустимая цепочка сертификатов делает сертификат сервера недействительным и приводит к появлению предупреждений браузера. На практике эту проблему иногда трудно диагностировать, потому что некоторые браузеры могут реконструировать неполные цепочки, а некоторые нет. Все браузеры склонны кэшировать и повторно использовать промежуточные сертификаты.

2. Используйте безопасные протоколы

В семействе SSL/TLS шесть протоколов: SSL v2, SSL v3, TLS v1.0, TLS v1.1, TLS v1.2 и TLS v1.3:

  • SSL v2 небезопасен и не должен использоваться. Эта версия протокола настолько плоха, что ее можно использовать для атаки на ключи RSA и сайты с одинаковым именем, даже если они находятся на совершенно разных серверах (атака DROWN).

  • SSL v3 небезопасен при использовании с HTTP (атака SSLv3 POODLE) и слаб при использовании с другими протоколами. Он также устарел и не должен использоваться.

  • TLS v1.0 и TLS v1.1 — это устаревшие протоколы, которые не следует использовать, но на практике они обычно необходимы. Его основная слабость (BEAST) устранена в современных браузерах, но другие проблемы остались. TLS v1.0 объявлен устаревшим в соответствии с PCI DSS. Точно так же TLS v1.0 и TLS v1.1 устарели в январе 2020 года в современных браузерах.

  • TLS v1.2 и v1.3 не имеют известных проблем с безопасностью.

TLS v1.2 или TLS v1.3 должен быть вашим основным протоколом, потому что эта версия предлагает современное аутентифицированное шифрование (также известное как AEAD). Если вы не поддерживаете TLS v1.2 или TLS v1.3 сегодня, ваша безопасность недостаточна.

Для поддержки старых клиентов вам может потребоваться пока продолжать поддерживать TLS v1.0 и TLS v1.1. Однако вы должны запланировать отказ от TLS v1.0 и TLS v1.1 в ближайшем будущем. Например, стандарт PCI DSS требует, чтобы все сайты, принимающие платежи по кредитным картам, прекратили поддержку TLS v1.0 к июню 2018 года. Точно так же современные браузеры прекратят поддержку TLS v1.0 и TLS v1.1 к январю 2020 года.

Преимущества использования TLS v1.3:

  • Улучшенная производительность (уменьшены задержки)

  • Улучшенная безопасность

  • Удалены устаревшие / небезопасные функции, такие как наборы шифров, сжатие и т. Д.

3. Используйте наборы безопасных шифров

Чтобы безопасно общаться, вы должны сначала убедиться, что вы общаетесь напрямую с желаемой стороной (а не через кого-то еще, кто подслушивает) и безопасно обмениваетесь данными. В SSL и TLS наборы шифров определяют, как происходит безопасная связь. Они состоят из различных строительных блоков с идеей достижения безопасности за счет разнообразия. Если один из строительных блоков окажется слабым или ненадежным, вы сможете переключиться на другой.

Вы должны полагаться главным образом на наборы AEAD, которые обеспечивают строгую аутентификацию и обмен ключами, прямую секретность и шифрование не менее 128 бит. Некоторые другие, более слабые наборы могут по-прежнему поддерживаться при условии, что они согласованы только со старыми клиентами, которые не поддерживают ничего лучшего.

Есть несколько устаревших криптографических примитивов, которых следует избегать:

  • Анонимные наборы Диффи-Хеллмана (Anonymous Diffie-Hellman, ADH) не обеспечивают аутентификацию.

  • Наборы шифров NULL (NULL cipher) не обеспечивают шифрования.

  • Наборы экспортированных шифров небезопасны при согласовании в соединении

  • Пакеты со слабыми шифрами (112 бит или меньше) используют шифрование, которое легко взломать, небезопасны.

  • RC4 небезопасен.

  • 64-битный блочный шифр (3DES/DES/RC2/IDEA) слаб.

  • Наборы шифров с обменом ключами RSA (TLS_RSA) являются слабыми

Есть несколько наборов шифров, которым следует отдать предпочтение:

  • Наборы шифров AEAD (Authenticated Encryption with Associated Data) — CHACHA20_POLY1305, GCM и CCM

  • Шифры PFS (Perfect Forward Secrecy) — ECDHE_RSA, ECDHE_ECDSA, DHE_RSA, DHE_DSS, CECPQ1 и все шифры TLS 1.3

В качестве отправной точки используйте следующую конфигурацию набора, предназначенную для ключей RSA и ECDSA:

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256

Предупреждение

Рекомендуется всегда сначала тестировать конфигурацию TLS в тестовой среде, перенося изменения в производственную среду только тогда, когда вы уверены, что все работает должным образом. Обратите внимание, что приведенный выше список является общим и что не все системы (особенно старые) поддерживают все наборы. Вот почему важно сначала протестировать настройку.

В приведенном выше примере конфигурации используются стандартные имена наборов TLS. Некоторые платформы используют нестандартные имена; пожалуйста, обратитесь к документации для вашей платформы для получения более подробной информации. Например, с OpenSSL будут использоваться следующие имена наборов:

ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-ECDSA-AES128-SHA
ECDHE-ECDSA-AES256-SHA
ECDHE-ECDSA-AES128-SHA256
ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES128-SHA
ECDHE-RSA-AES256-SHA
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES256-SHA384
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES128-SHA
DHE-RSA-AES256-SHA
DHE-RSA-AES128-SHA256
DHE-RSA-AES256-SHA256

4. Выберите лучшие наборы шифров

В версиях протокола SSL v3 и более поздних версиях клиенты представляют список наборов шифров, которые они поддерживают, а серверы выбирают один набор из списка для использования в соединении. Однако не все серверы справляются с этим хорошо; некоторые выберут первый поддерживаемый набор из списка клиента. Наличие серверов, активно выбирающих наилучший доступный набор шифров, имеет решающее значение для достижения наилучшей безопасности.

5. Используйте прямую секретность

Секретность пересылки (иногда также называемая идеальной секретностью пересылки) — это функция протокола, которая обеспечивает безопасные сеансы связи, не зависящие от закрытого ключа сервера. С наборами шифров, которые не обеспечивают прямой секретности, кто-то, кто может восстановить закрытый ключ сервера, может расшифровать все ранее записанные зашифрованные разговоры. Вам необходимо поддерживать и предпочитать наборы ECDHE, чтобы обеспечить прямую секретность в современных веб-браузерах.

Для поддержки более широкого круга клиентов вам также следует использовать наборы DHE в качестве запасного варианта после ECDHE. Избегайте обмена ключами RSA без крайней необходимости. Предложенная конфигурация по умолчанию в Разделе 2.3 содержит комплекты, которые обеспечивают только прямую секретность.

6. Используйте надежный обмен ключами

Для обмена ключами общедоступные сайты обычно могут выбирать между классическим методом обмена ключами Диффи-Хеллмана (DHE) и его вариантом эллиптической кривой ECDHE. Существуют и другие алгоритмы обмена ключами, но они, как правило, так или иначе небезопасны. Обмен ключами RSA по-прежнему очень популярен, но он не обеспечивает прямой секретности.

В 2015 году группа исследователей опубликовала новые атаки на DHE — их работа известна как атака Logjam. Исследователи обнаружили, что обмен ключами DH с меньшей надежностью (например, 768 бит) может быть легко взломан и что некоторые известные 1024-битные группы DH могут быть взломаны государственными органами. Чтобы быть в безопасности, при развертывании DHE настройте его как минимум на 2048 битов безопасности.

Некоторые старые клиенты (например, Java 6) могут не поддерживать этот уровень надежности. Из соображений производительности большинству серверов следует предпочесть ECDHE, который и сильнее, и быстрее. В этом случае хорошим выбором будет именованная кривая secp256r1 (также известная как P-256).

7. Устранение известных проблем

В последние годы было совершено несколько серьезных атак на SSL и TLS, но, как правило, они не должны вас беспокоить, если вы используете новейшее программное обеспечение и следуете советам, приведенным в этом руководстве. Однако ничто не является абсолютно безопасным, поэтому рекомендуется следить за тем, что происходит в области безопасности. Оперативно применяйте исправления поставщиков, если и когда они становятся доступными; в противном случае полагайтесь на обходные пути для смягчения последствий.

В следующей части мы поговорим о производительности решений, какие современные технологии функции HTTP, TLS, SSL которые позволяют обойти меры безопасности и дадим рекомендации по проверке безопасности TLS.

Как обеспечить поддержку SSL-инвентаря в Авторизованных покупателях

Объявления, размещаемые через Авторизованных покупателей, должны поддерживать SSL

Весь инвентарь, доступный в Авторизованных покупателях, использует защищенный протокол SSL, поэтому креативы тоже должны его поддерживать.

Это руководство поможет вам обеспечить поддержку SSL-инвентаря в Авторизованных покупателях.

С чего следует начинать всем покупателям

  • Получите собственный SSL-сертификат. Если специалисты Google, ответственные за сертификацию сторонних поставщиков, ещё не обращались к вам, а также если у вас есть вопросы о предстоящей проверке или процедуре получения сертификата в целом, напишите нам письмо по адресу 3p-recert@google.com.
  • Удостоверьтесь, что у ваших поставщиков есть собственные SSL-сертификаты. Это требование относится к разработчикам всех рекламных технологий, которые вы используете в Авторизованных покупателях. В настоящий момент мы выдаем сертификаты поставщикам решений, предназначенных для работы с медийной рекламой и объявлениями VAST. Более подробные сведения можно найти в списке поставщиков Авторизованных покупателей.

Покупатели, использующие аукционы в режиме реального времени

Подготовьте инструмент назначения ставок

Настройте инструмент назначения ставок, чтобы он мог корректно интерпретировать запросы ставок для SSL-инвентаря и отвечать на них. Убедитесь, что ваш инструмент поддерживает описанные ниже операции.

  1. Интерпретация запросов ставки SSL

    Значение 48 представляет атрибут RichMediaAdsVendor: RichMediaCapabilityNonSSL, который относится к креативу. В запросе ставки это выглядит так:

    repeated int32 excluded_attribute = 48

    • Если в поле excluded_attribute указано значение 48, объявления должны поддерживать SSL.
    • Если в поле excluded_attribute нет значения 48, допускаются объявления и с поддержкой SSL, и без нее.

    Это поле будет использоваться в запросах ставки для медийных объявлений и видеообъявлений In-Stream.

  2. Ответ с креативом, который поддерживает SSL

    Чтобы отправить ставку для объявления с поддержкой SSL, необходимо указать значение 47 RichMediaCapabilityType: RichMediaCapabilitySSL в поле attribute. В ответе на запрос ставки это выглядит следующим образом:

    repeated int32 attribute = 47

    Примечания

    • Если ваш тег всегда обеспечивает поддержку SSL (например, используемый в нем код JavaScript или макрос указывает, что во всех запросах должен использоваться протокол SSL), объявите это. Не объявляйте, что креатив поддерживает SSL, если для обеспечения его совместимости с этим протоколом система назначения ставок должна выполнить какие-либо действия с тегом.
    • Используйте разные идентификаторы buyer_creative_id для версий объявления с поддержкой SSL и без нее.

      Различать версии позволяет и атрибут 47 RichMediaCapabilityType: RichMediaCapabilitySSL, однако предпочтительнее использовать уникальные идентификаторы buyer_creative_id.

      Для удобства мы также рекомендуем указывать статус поддержки SSL в названии креатива.

    • Объявления с поддержкой SSL могут возвращаться в ответ на запросы, не предусматривающие поддержку SSL, и участвовать в аукционе наравне с прочими рекламными материалами.

Как проверить, поддерживают ли креативы протокол SSL в полной мере

Если для вызовов отслеживания или объявления не используется HTTPS, ставка будет исключена из аукциона, а код объявления будет отклонен. Пока вы не убедитесь, что все поставщики, с которыми вы работаете, поддерживают SSL, не используйте динамическую вставку внешних URL отслеживания.

Одного использования протокола HTTPS недостаточно. У целевой страницы должен быть действительный сертификат последней версии. Чтобы просмотреть эти данные, нажмите на значок ключа в браузере Chrome. Подробнее о том, как проверить, обеспечивается ли защищенное подключение к сайту…

При использовании геотаргетинга проверьте, не действуют ли ограничения на показ определенных объектов в тех или иных регионах. Если по этой причине система подтверждения не сможет загрузить ваш объект, значит креатив не поддерживает SSL.

При работе с видеокреативами убедитесь в том, что URL <clickTracking> не выполняет переадресацию на целевую страницу, которая не поддерживает протокол SSL. Осуществлять перенаправление на целевую страницу могут только URL в узле <ClickThrough>. Если URL <clickTracking> выполняет переадресацию на целевую страницу, не использующую протокол SSK, то система проверки будет считать, что креатив не является SSL-совместимым.

При назначении ставок в реальном времени настраивайте предварительный таргетинг на SSL-инвентарь

Если вы хотите, чтобы для показа рекламы вам предлагался только инвентарь с поддержкой протокола SSL, не настраивайте для ресурса PretargetingConfig таргетинг на атрибут RichMediaCapabilityNonSSL. Отключив таргетинг на RichMediaCapabilityNonSSL, вы будете получать все SSL-ресурсы и ресурсы без поддержки SSL, которые соответствуют другим параметрам предварительного таргетинга. Чтобы получать инвентарь обоих типов, вы также можете настроить таргетинг на атрибут RichMediaCapabilitySSL, но это действие не является обязательным.

Важное примечание

  • Прежде чем объявлять, что все ваши креативы, размещаемые в рамках назначения ставок в реальном времени, поддерживают протокол SSL, тестируйте их небольшими группами.

Эта информация оказалась полезной?

Как можно улучшить эту статью?


9.1. Общие сведения об SSL

SSL (Secure Sockets Layer) — протокол, используемый для защищенной передачи информации в Интернет. На данном коммутаторе SSL может быть использован совместно с HTTP для доступа к WEB-интерфейсу управления коммутатором.

Протокол SSL использует протокол TCP для непосредственной передачи пакетов по сети. Поверх TCP инкапсулируется заголовок одного из SSL Record Protocol. Им может быть SSL Handshake Protocol, позволяющий согласовывать ключи и алгоритмы шифрования. SSL не зависит от протокола уровня приложений и является полностью прозрачным для них.
В общей модели SSL согласовывает алгоритм шифрования, ключ шифрования и аутентификацию сервера перед передачей данных, где используется SSL-сертификат доверенного центра. В настоящее время ключи, предоставляемые коммутатором, не являются официальными сертификационными ключами, а являются частными ключами сертификации, создаваемыми программным обеспечением SSL на коммутаторе, которые не могут быть распознаны браузером. Это не является обязательным условием работы HTTPS и достаточно для обеспечения безопасной связи между пользователем и коммутатором. Ключ шифрования и метод шифрования должны, которые будет использоваться для шифрования данных будут согласованы в момент установления соединения.

9.2. Конфигурация SSL

  1. Включить функцию SSL;
  2. Настроить номер порта для SSL;
  3. Настроить набор методов шифрования для SSL;
  4. Инструменты диагностики SSL;
  1. Включить функцию SSL:

Команда

Описание

ip http secure-server

no ip http secure-server

!  В режиме глобальной конфигурации

Включить функцию SSL. Команда no отключает эту функцию.

2. Настроить номер порта для SSL:

Команда

Описание

ip http secure-port <port-number>

no ip http secure-port

!  В режиме глобальной конфигурации

Задать порт для использования SSL. Команда no возвращает значение по-умолчанию — 443.

3. Настроить набор методов шифрования для SSL:

Команда

Описание

ip http secure-ciphersuite {des-cbc3-sha|rc4-128-sha| des-cbc-sha}

no ip http secure-ciphersuite

!  В режиме глобальной конфигурации

Выбрать алгоритм шифрования. Команда no отменяет выбор.

4. Инструменты диагностики SSL:

Команда

Описание

show ip http secure-server status

!  В привилегированном режиме

Отобразить информацию о конфигурации SSL.

debug ssl

no debug ssl

!  В привилегированном режиме

Отобразить отладочную информацию о SSL. Команда no отключает эту функцию.

9.3. Пример конфигурации SSL

После того, как WEB-интерфейс включен на коммутаторе, SSL может быть настроен для использования при получении более безопасного доступа пользователей к коммутатору.

Конфигурация коммутатора будет выглядеть следующим образом:

Switch(config)# ip http secure-server
Switch(config)# ip http secure-port 1025
Switch(config)# ip http secure-ciphersuite rc4-128-sha

9.4. Решение проблем при конфигурации SSL

  • Убедитесь в наличии физического соединения между коммутатором и пользователем, в том, что пользователь находится в нужной VLAN и L3-интерфейс на коммутаторе находится в состоянии UP;
  • Убедитесь, что пользователь использует верный порт;
  • Убедитесь, что WEB-интерфейс и SSL активированы на коммутаторе;
  • После изменения метода шифрования или порта, перезапустите SSL;
  • Для получения отладочной информации воспользуйтесь командой debug ssl.

Понравилась статья? Поделить с друзьями:
  • Личное признание руководства
  • Методы руководства трудом дошкольников
  • Инструкция по делу производства в районных судах
  • Мануал для windows 10
  • Инструкция по охране труда по работе с холодильным оборудованием