【Zabbix/Openssl】 클라이언트 인증서를 이용하여 Zabbix 서버에 안전한 액세스

8647 단어 Opensslzabbix

전제 조건



Zabbix 서버가 설치되어 있어야 합니다.

환경



CentOS 6.5: Zabbix 서버
Windows7: 클라이언트 터미널

설치된 패키지:
mod_ssl-2.2.15-47.el6.centos.x86_64
openssl-1.0.1e-42.el6.x86_64
openssl-devel-1.0.1e-42.el6.x86_64

그렇지 않은 경우 yum으로 설치하십시오.

서버 인증서 만들기



우선, 서버 증명서를 작성해, https로 Zabbix 서버에 액세스 할 수 있도록(듯이) 합니다. 이 시점에서는 클라이언트 인증을 하지 않습니다.

秘密鍵を作成。パスフレーズは任意でOKです。

# openssl genrsa -des3 -out server.key.secure 2048
Generating RSA private key, 2048 bit long modulus
........................+++

# openssl rsa -in server.key.secure -out server.key
Enter pass phrase for server.key.secure:
writing RSA key

作成されていることを確認。

# ls -ltr
total 8
-rw-r--r-- 1 root root 1751 Nov  8 22:25 server.key.secure
-rw-r--r-- 1 root root 1679 Nov  8 22:26 server.key

セキュリティ上の理由から、秘密鍵のパーミッションは「400」としておこう。

# chmod 400 server.key

CSR作成

# openssl req -new -key server.key -out server.csr
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]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Shinagawaku
Organization Name (eg, company) [Default Company Ltd]:Test.co.jp
Organizational Unit Name (eg, section) []:Test.col.jp
Common Name (eg, your name or your server's hostname) []:Test.co.jp
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

サーバ証明書を作成

# openssl x509 -in server.csr -out server.pem -req -sig nkey server.key -days 365
Signature ok
subject=/C=JP/ST=Tokyo/L=Shinagawaku\x08\x08/O=Test.co.jp/OU=Test.col\x08.jp/CN=Test.co.jp
Getting Private key

Apacheの設定ファイルを修正。
※ssl.confがhttpd.conf内でIncludeされていることが前提です。デフォルトでは、Includeされています。

vi /etc/httpd/conf.d/ssl.conf

以下の箇所を、作成したサーバ証明書(CertificateFile)と秘密鍵(CertificateKeyFile)を指定します。

SSLCertificateFile /root/work/server.pem
SSLCertificateKeyFile /root/work/server.key

Apacheを再起動。

# service httpd restart
Stopping httpd: [  OK  ]
Starting httpd: [  OK  ]


Zabbix를 방문하십시오. 다음 화면이 표시되지만 '이 사이트 탐색 계속(권장되지 않음)'을 선택하여 진행하십시오.



로그인 화면이 표시됩니다. 공인 인증서가 아니므로 인증서 오류가 발생했지만 SSL 통신은 가능합니다.



인증서 오류 - 인증서 표시를 클릭하면 인증서가 표시됩니다.



작성한 서버 인증서의 정보와 실수가 없는지 확인하십시오. 이것으로 서버 인증서 설치가 완료됩니다.

클라이언트 인증서 만들기



クライアント証明書を作成します。秘密鍵の作成。

# openssl genrsa -out client.key 2048
Generating RSA private key, 2048 bit long modulus
......+++
..........................+

CSRを作成。

[root@v157-7-131-58 client]# openssl req -new -key client.key -cliout client.csr
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]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Shinagawaku
Organization Name (eg, company) [Default Company Ltd]:Test2
Organizational Unit Name (eg, section) []:Test2
Common Name (eg, your name or your server's hostname) []:Test2
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate req

サーバ証明書を作成。

# openssl x509 -in client.scsr -out client-ca.crt -req  -signkey client.key -days 360
Signature ok
subject=/C=JP/ST=Tokyo/L=Shinagawaku/O=T\x08\x1B[C\x08\x1B[Cest2/OU=Test2/CN=Test2
Getting Private key

証明書と秘密鍵のペアをexport。パスワードは任意(インストールするときに入力を求められる)。

# openssl pkcs12 -export -inkey client.key -in client -ca.crt  -out client.p12 -name "test2"
Enter Export Password:
Verifying - Enter Export Password:

作成されていることを確認。

# ls -ltr
total 16
-rw-r--r-- 1 root root 1679 Nov  9 06:25 client.key
-rw-r--r-- 1 root root 1009 Nov  9 06:26 client.csr
-rw-r--r-- 1 root root 1212 Nov  9 06:26 client-ca.crt
-rw-r--r-- 1 root root 2512 Nov  9 06:27 client.p12

Apacheの設定ファイル(ssl.conf)を修正して、再起動します。
クライアント認証を必須(VerifyClient)とするのと、クライアント証明書を指定(SSLCACertificateFile)します。

SSLVerifyClient require
SSLCACertificateFile /root/work/client/client-ca.crt

# service httpd restart

これで、サーバ側の設定は完了です。


인증서 가져오기



여기서부터는 단말측(Windows7)에서의 설정이 됩니다.
IE에서 인증서를 가져오는 방법을 설명합니다. 기본적으로는 흐름을 따라가는 것만으로 괜찮습니다.
우선은, 작성한 클라이언트 증명서(client.p12)를 다운로드해, ​​데스크탑에 있어서 증명서를 더블 클릭.



안내에 따라 설치.





설정한 비밀번호를 입력합니다.



인증서 저장소는 '개인'에 두는 것이 좋습니다.





완료. IE에서 "인터넷 옵션"- "콘텐츠"- "인증서"를 선택하면 인증서가 설치되어 있는지 확인할 수 있습니다.



Zabbix 서버에 대한 액세스.



Zabbix 서버에 액세스하면 클라이언트 인증서 사용이 표시됩니다.
「OK」를 누르면 다음에 진행해, 로그인을 할 수 있게 됩니다.



클라이언트 인증서가 없으면 다음과 같은 화면이 표시됩니다.



스마트 폰에 클라이언트 인증서를 도입 (하지만 작동하지 않습니다).



스마트폰에 클라이언트 인증서를 설치합니다. 이것은 스마트 폰에 의존하기 때문에, 어디까지나 참고 정도로 해 주세요. 내 스마트 폰은 Xperia입니다.
설정 - 보안 - 내부 스토리지 또는 SD 카드에서 설치를 선택합니다.



다운로드한 인증서 파일을 선택합니다.



비밀번호를 입력합니다.



인증서 이름을 입력합니다.



그러나 "신뢰할 수있는 자격 증명"을 확인해도 인증서를 확인할 수 없습니다. 앱(AndZabbixLite)으로 액세스해도 당연히 에러가 표시된다.



미래의 도전



스마트 폰에 클라이언트 인증서를 도입하고 앱 (AndZabbixLite)으로 액세스.

좋은 웹페이지 즐겨찾기