Linux管理者-SSL証明書を作成する

TLSとSSLの背景

TLSは、SSLに続く、ソケット層セキュリティの新しい標準です。TLSは、SSLを進歩させる他のセキュリティおよびプロトコルラッパー機能とともに、より優れた暗号化標準を提供します。多くの場合、TLSとSSLという用語は同じ意味で使用されます。ただし、プロのCentOS管理者として、それぞれを区別する違いと履歴に注意することが重要です。

SSLはバージョン3.0に移行します。SSLは、Netscapeの下で業界標準として開発および宣伝されました。NetscapeがAOL(90年代に人気のあるISP、別名America Online)によって購入された後、AOLはSSLのセキュリティ改善に必要な変更を実際に宣伝することはありませんでした。

バージョン3.1で、SSLテクノロジーはオープンシステム標準に移行し、TLSに変更されました。SSLの著作権はまだAOLが所有していたため、新しい用語が作成されました。TLS - Transport Layer Security。したがって、TLSは実際にはSSLとは異なることを認識することが重要です。特に、古いSSLテクノロジーには既知のセキュリティ問題があり、一部は今日では廃止されていると見なされています。

Note−このチュートリアルでは、テクノロジー3.1以降について話すときにTLSという用語を使用します。次に、SSL SSLテクノロジー3.0と下位に特定のコメント。

SSLとTLSのバージョン管理

次の表は、TLSとSSLのバージョン管理が互いにどのように関連するかを示しています。SSLバージョン3.2に関して話す人が何人かいると聞きました。しかし、彼らはおそらくブログを読んで用語を理解しました。プロの管理者として、私たちは常に標準的な用語を使用したいと考えています。したがって、SSLは、過去のテクノロジーを参照する必要があります。簡単なことで、CentOSの求職者を熟練したCS専攻のように見せることができます。

TLS SSL
- 3.0
1.0 3.1
1.1 3.2
1.2 3.3

TLSは、今日のインターネットのユーザーにとって重要な2つの主要な機能を実行します。1つは、パーティが誰であるかを確認することです。authentication。二、それは提供しますend-to-end encryption このネイティブ機能を欠いている上位レベルのプロトコル(ftp、http、電子メールプロトコルなど)のトランスポート層で。

1つ目は、当事者誰であり、エンドツーエンドの暗号化としてセキュリティにとって重要であるかを確認します。消費者が支払いを行うことを許可されていないウェブサイトへの暗号化された接続を持っている場合、財務データは依然として危険にさらされています。これは、すべてのフィッシングサイトにないものです。a properly signed TLS certificate verifying website operators are who they claim to be from a trusted CA

適切に署名された証明書がないことを回避するには、2つの方法しかありません。ユーザーをだまして自己署名証明書のWebブラウザーの信頼を許可するか、ユーザーが技術に精通しておらず、信頼できる証明書の重要性を知らないことを望みます。権限(またはCA)。

このチュートリアルでは、自己署名証明書と呼ばれるものを使用ます。つまり、この証明書にWebサイトにアクセスするすべてのWebブラウザーで信頼済みのステータスを明示的に付与しないと、ユーザーがサイトにアクセスするのを思いとどまらせるエラーが表示されます。次に、自己署名証明書を使用してサイトにアクセスする前に、ユーザーがいくつかのアクションを実行できるようにします。セキュリティのために、これは良いことであることを忘れないでください。

opensslのインストールと構成

opensslは、TLSのオープンソース実装の標準です。opensslは、Linux、BSDディストリビューション、OS Xなどのシステムで使用され、Windowsもサポートしています。

opensslは、トランスポート層のセキュリティを提供し、開発者向けの認証エンドツーエンド暗号化の詳細なプログラミングを抽象化するため、重要です。これが、TLSを使用するほぼすべてのオープンソースアプリケーションでopensslが使用される理由です。また、Linuxのすべての最新バージョンにデフォルトでインストールされます。

デフォルトでは、opensslは少なくともバージョン5以降のCentOSにインストールする必要があります。念のため、YUM経由でopensslをインストールしてみましょう。YUMはパッケージがすでにインストールされているかどうかを通知するのに十分インテリジェントであるため、installを実行するだけです。互換性の理由で古いバージョンのCentOSを実行している場合、yum -yインストールを実行すると、opensslが半最近のハートブリードの脆弱性に対して更新されます。

インストーラーを実行すると、opensslが実際に更新されていることがわかりました。

[root@centos]# yum -y install openssl
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-60.el7_3.1 for 
package: 1:openssl-1.0.1e-60.el7_3.1.x86_64
--> Running transaction check
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Finished Dependency Resolution 
Dependencies Resolved

===============================================================================
=============================================================================== 
 Package                               Arch
 Version                            Repository                        Size 
=============================================================================== 
=============================================================================== 
Updating: 
openssl                               x86_64                          
1:1.0.1e-60.el7_3.1                 updates                           713 k
Updating for dependencies:

OpenLDAPの自己署名証明書を作成する

これは、以前のOpenLDAPインストールの自己署名を作成する方法です。

自己署名OpenLDAP証明書を作成します。

openssl req -new -x509 -nodes -out /etc/openldap/certs/myldaplocal.pem -keyout
/etc/openldap/certs/myldaplocal.pem -days 365

[root@centos]# openssl req -new -x509 -nodes -out /etc/openldap/certs/vmnet.pem 
-keyout /etc/openldap/certs/vmnet.pem -days 365 
Generating a 2048 bit RSA private key
.............................................+++
................................................+++
writing new private key to '/etc/openldap/certs/vmnet.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) [XX]:US
State or Province Name (full name) []:Califonia
Locality Name (eg, city) [Default City]:LA
Organization Name (eg, company) [Default Company Ltd]:vmnet
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos
Email Address []:[email protected]
[root@centos]#

これで、OpenLDAP証明書を/ etc / openldap / certs /に配置する必要があります。

[root@centos]# ls /etc/openldap/certs/*.pem 
/etc/openldap/certs/vmnetcert.pem  /etc/openldap/certs/vmnetkey.pem
[root@centos]#

ご覧のとおり、証明書とキーの両方が/ etc / openldap / certs /ディレクトリにインストールされています。最後に、権限は現在rootユーザーによって所有されているため、それぞれの権限を変更する必要があります。

[root@centos]# chown -R  ldap:ldap /etc/openldap/certs/*.pem
[root@centos]# ls -ld /etc/openldap/certs/*.pem
-rw-r--r--. 1 ldap ldap 1395 Feb 20 10:00 /etc/openldap/certs/vmnetcert.pem 
-rw-r--r--. 1 ldap ldap 1704 Feb 20 10:00 /etc/openldap/certs/vmnetkey.pem
[root@centos]#

ApacheWebサーバーの自己署名証明書を作成する

このチュートリアルでは、Apacheがすでにインストールされていることを前提としています。別のチュートリアル(CentOSファイアウォールの構成)でApacheをインストールしました。今後のチュートリアルでは、Apacheの高度なインストールについて説明します。したがって、Apacheをまだインストールしていない場合は、それに従ってください。

次の手順を使用してApacheHTTPdをインストールできるようになったら-

Step 1 − Apachehttpdサーバー用のmod_sslをインストールします。

まず、mod_sslを使用してApacheを構成する必要があります。YUMパッケージマネージャーを使用すると、これは非常に簡単です-

[root@centos]# yum -y install mod_ssl

次に、Apacheデーモンをリロードして、Apacheが新しい構成を使用するようにします。

[root@centos]# systemctl reload httpd

この時点で、ApacheはローカルホストでTLS接続をサポートするように構成されています。

Step 2 −自己署名SSL証明書を作成します。

まず、プライベートTLSキーディレクトリを設定しましょう。

[root@centos]# mkdir /etc/ssl/private 
[root@centos]# chmod 700 /etc/ssl/private/

Note−ルートのみがこのディレクトリへの読み取り/書き込みアクセス権を持っていることを確認してください。ワールド読み取り/書き込みアクセスを使用すると、秘密鍵を使用して、盗聴されたトラフィックを復号化できます。

証明書とキーファイルを生成します。

[root@centos]# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout 
/etc/ssl/private/self-gen-apache.key -out /etc/ssl/certs/self-sign-apache.crt 
Generating a 2048 bit RSA private key
..........+++
....+++
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:xx
Locality Name (eg, city) [Default City]:xxxx
Organization Name (eg, company) [Default Company Ltd]:VMNET
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos.vmnet.local
Email Address []:

[root@centos]#

Note −ドメイン名が登録されていない場合は、サーバーのパブリックIPアドレスを使用できます。

私たちの証明書を見てみましょう-

[root@centos]# openssl x509 -in self-sign-apache.crt -text -noout
Certificate:
   Data:
      Version: 3 (0x2)
      Serial Number: 17620849408802622302 (0xf489d52d94550b5e)
   Signature Algorithm: sha256WithRSAEncryption
   Issuer: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
   Validity
      Not Before: Feb 24 07:07:55 2017 GMT
      Not After : Feb 24 07:07:55 2018 GMT
   Subject: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
   Subject Public Key Info:
      Public Key Algorithm: rsaEncryption
         Public-Key: (2048 bit)
            Modulus:
               00:c1:74:3e:fc:03:ca:06:95:8d:3a:0b:7e:1a:56:
               f3:8d:de:c4:7e:ee:f9:fa:79:82:bf:db:a9:6d:2a:
               57:e5:4c:31:83:cf:92:c4:e7:16:57:59:02:9e:38:
               47:00:cd:b8:31:b8:34:55:1c:a3:5d:cd:b4:8c:b0:
               66:0c:0c:81:8b:7e:65:26:50:9d:b7:ab:78:95:a5:
               31:5e:87:81:cd:43:fc:4d:00:47:5e:06:d0:cb:71:
               9b:2a:ab:f0:90:ce:81:45:0d:ae:a8:84:80:c5:0e:
               79:8a:c1:9b:f4:38:5d:9e:94:4e:3a:3f:bd:cc:89:
               e5:96:4a:44:f5:3d:13:20:3d:6a:c6:4d:91:be:aa:
               ef:2e:d5:81:ea:82:c6:09:4f:40:74:c1:b1:37:6c:
               ff:50:08:dc:c8:f0:67:75:12:ab:cd:8d:3e:7b:59:
               e0:83:64:5d:0c:ab:93:e2:1c:78:f0:f4:80:9e:42: 
               7d:49:57:71:a2:96:c6:b8:44:16:93:6c:62:87:0f:
               5c:fe:df:29:89:03:6e:e5:6d:db:0a:65:b2:5e:1d:
               c8:07:3d:8a:f0:6c:7f:f3:b9:32:b4:97:f6:71:81:
               6b:97:e3:08:bd:d6:f8:19:40:f1:15:7e:f2:fd:a5:
               12:24:08:39:fa:b6:cc:69:4e:53:1d:7e:9a:be:4b:

これは、opensslコマンドで使用した各オプションの説明です。

コマンド アクション
req -X509 キー管理にはX.509CSR管理PKI標準を使用します。
-ノード パスフレーズで証明書を保護しないでください。Apacheは、パスフレーズを中断することなく証明書を使用できる必要があります。
-2555日 証明書の有効期間を7年または2555日に通知します。期間は必要に応じて調整できます。
-newkey rsa:2048 2048ビット長のRSAを使用してキーと証明書の両方を生成するように指定されています。

次に、クライアントとPFSをネゴシエートするためのDiffie-Helimanグループを作成します。

[centos#] openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

これには5〜15分かかります。

Perfect Forward Secrecy−秘密鍵が危険にさらされた場合にセッションデータを保護するために使用されます。これにより、セッションごとに一意の、クライアントとサーバー間で使用されるキーが生成されます。

次に、Perfect ForwardSecrecy構成を証明書に追加します。

[root@centos]# cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/self-sign-apache.crt

キーファイルと証明書ファイルを使用するようにApacheを構成する

/etc/httpd/conf.d/ssl.confに変更を加えます

ssl.confに次の変更を加えます。ただし、その前に、元のファイルをバックアップする必要があります。viemcasなどの高度なテキストエディタで本番サーバーに変更を加える場合は、編集を行う前に常に構成ファイルをバックアップすることをお勧めします。

[root@centos]# cp /etc/httpd/conf.d/ssl.conf ~/

ssl.confの正常に機能するコピーをホームフォルダのルートにコピーした後、編集を続けましょう。

  • Locate
  • DocumentRootとServerNameの両方を次のように編集します。
\\# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html"
ServerName centos.vmnet.local:443

DocumentRootこれは、デフォルトのApacheディレクトリへのパスです。このフォルダには、Webサーバーまたはサイトのデフォルトページを要求するHTTPリクエストを表示するデフォルトページがあります。

ServerNameは、サーバーのIPアドレスまたはホスト名のいずれかであるサーバー名です。TLSの場合、ホスト名を使用して証明書を作成することをお勧めします。OpenLdapチュートリアルから、ローカルエンタープライズドメインにcentosのホスト名を作成しました:vmnet.local

ここで、次の行をコメントアウトしたいと思います。

SSLプロトコル

#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
 ~~~~> #SSLProtocol all -SSLv2
 
#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
 ~~~~> #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

次に、証明書と秘密鍵と公開鍵のペアの場所をApacheに知らせます。

自己署名証明書ファイルへのパスを指定します

#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
~~~~> SSLCertificateFile /etc/ssl/certs/self-sign-apache.crt
specify path to our private key file
#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
~~~~> SSLCertificateKeyFile /etc/ssl/private/self-gen-apache.key

最後に、ポート443を介したhttpsへのインバウンド接続を許可する必要があります