Contents
1.SSL証明書作成
1.1 CA自己認証局の作成
1.1.1 CA構築の事前準備
①SSL コマンドにPATH を通す
これをしておくとCA.shが使えるようになるので便利
1 |
# export PATH=/etc/pki/tls/misc:$PATH |
②openssl.cnfの編集
1 2 3 4 |
# vi /etc/pki/tls/openssl.cnf 次の箇所を探しコメントアウトを外す # nsCertType = server → nsCertType = server # nsCertType = sslCA, emailCA → nsCertType = sslCA, emailCA |
1.1.2 CA 関連証明書の作成
①自己署名済みCA証明書(cacert.pem) CA証明書の秘密鍵(cakey.pem)の作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# /etc/pki/CA/certs/CA -newca CA certificate filename (or enter to create) <Enter> ・・・・・・・・・・・・・・・・・・・・・・ CA用パスワードが聞かれます Enter PEM pass phrase: ?????? Verifying - Enter PEM pass phrase: ?????? ・・・・・・・・・・・・・・・・・・・・・・ 証明書情報が聞かれます Country Name(2 letter code) [XX]: JP State or Province Name(full name) []: Kanagawa (任意のもの) Locality Name(eg, city) [Default City]: yokohama (任意のもの) Organization Name(eg, company) [Default Company Ltd]:(任意のもの) Organizational Unit Name(eg, section) []: (任意のもの) Common Name(eg, your name or your server's hostname): (任意のもの) Email Address: (任意のもの) ・・・・・・・・・・・・・・・・・・・・・・ 再度PEM pass phraseを聞かれます Enter pass phrase for /etc/pki/CA/private/./cakey.pem:?????? 終了するとつぎのファイルができる /etc/pki/CA/certs/cacert.pem : 自己署名済みCA証明書ができる /etc/pki/CA/certs//private/cakey.pem : CA証明書の秘密鍵 |
②秘密鍵(cakey.pem)は絶対に他の人に見られてはならないので 権限変更
1 2 |
# chmod 600 /etc/pki/CA/certs//private/cakey.pem # chmod 700 /etc/pki/CA/certs//private/ |
③CA 証明書をブラウザにインポートするca.der ファイルの作成
これをしないと、アクセスするたびに警告が発生します。 以下のコマンドでブラウザに取り込めるDER形式にエンコードします。
1 |
# openssl x509 -inform PEM -outform DER -in /etc/pki/CA/cacert.pem -out /etc/pki/CA/ca.der |
1.2 サーバー関連証明書の作成
作成した自己認証局CAを使って、目的のサイト自体の証明書を発行します。
1.2.1 サーバー用秘密鍵(newkey.pem)を作成する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# /etc/pki/CA/certs/CA -newreq CA certificate filename (or enter to create) <Enter> ・・・・・・・・・・・・・・・・・・・・・・ サーバー証明書用パスワードが聞かれます Enter PEM pass phrase: $$$$$ Verifying - Enter PEM pass phrase: $$$$$ ・・・・・・・・・・・・・・・・・・・・・・ 証明書情報が聞かれます Country Name(2 letter code) [XX]: JP State or Province Name(full name) []: Kanagawa(任意のもの) Locality Name(eg, city) [Default City]: yokohama (任意のもの) Organization Name(eg, company) [Internet Widgits Pty Ltd]:(任意のもの) Organizational Unit Name(eg, section) []: (任意のもの) Common Name(eg, YOUR name) []: (サーバーIPアドレス) Email Address: (任意のもの) ・・・・・・・・・・・・・・・・・・・・・・ |
終了するとつぎのファイルができる
/etc/pki/CA/certs/newkey.pem
/etc/pki/CA/certs/newkey.pem
1.2.2 サーバー秘密鍵のパスワードを削除
このパスワードを設定したままにしておくと、SSL を起動するたびにパスワード入力が必要になり、面倒ですから削除しておきます。
1 2 |
# openssl rsa -in /etc/pki/CA/certs/newkey.pem -out /etc/pki/CA/certs/newkey.pem Enter pass phrase for newkey.pem:$$$$$ |
1.2.3 サーバー用証明書(newcert.pem/server.crt)を作成
①newcert.pem作成
1 2 |
# /etc/pki/CA/certs/CA -sign Enter pass phrase for ./demoCA/private/cakey.pem:????? CA用パスワード |
②server.crt作成
1 |
# openssl x509 -in newcert.pem -out server.crt |
2.FTP サーバーの導入
CentOS7で標準のvsftpdを使わずに従来からあるproftpdを導入してみます。
2.1 proftpdダウンロード
ダウンロードサイトはいろいろありますが例として次のようなもの
1 |
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.6.tar.gz |
2.2 proftpdインストール
1 |
# tar zxvf proftpd-1.3.6.tar.gz |
1 2 3 4 5 6 |
proftpd-1.3.6]# ./configure \ --prefix=/usr/local/proftpd \ インストールディレクトリー(任意) --with-modules=mod_tls \ SSL,tls使用 --with-includes=/usr/include/openssl openSSL使用 コンパイル及びインストール # make && make install |
2.3 インストール後の設定
①ユーザーグループ作成
1 |
# groupadd nogroup |
②proFTPD の設定ファイル編集(proftpd.conf)
以下は本ページのCA設定を基にした設定ファイルの例
全てのディレクトリでパーミッション変更を許可。
<Limit SITE_CHMOD>
AllowAll
</Limit>
・・・・・・・・・・・
Anonymous(匿名)でログイン出来ないようにする。
<Anonymous ~ftp>」から「</Anonymous>」まで全ての行をコメントアウトする
# <Anonymous ~ftp>
# User ftp
# Group ftp
#
# # We want clients to be able to login with "anonymous" as well as "ftp"
# UserAlias anonymous ftp
#
# # Limit the maximum number of anonymous logins
# MaxClients 10
#
# # We want 'welcome.msg' displayed at login, and '.message' displayed
# # in each newly chdired directory.
# DisplayLogin welcome.msg
# DisplayChdir .message
#
# # Limit WRITE everywhere in the anonymous chroot
# <Limit WRITE>
# DenyAll
# </Limit>
#</Anonymous>
・・・・・・・・・・・・・・・・・・・・・・
FTP over SSL
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd.log
TLSProtocol SSLv23
TLSCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
TLSRequired off
TLSVerifyClient off
TLSRSACertificateFile /etc/pki/CA/certs/server.crt
TLSRSACertificateKeyFile /etc/pki/CA/certs/newkey.pem
TLSVerifyClient off
</IfModule>
<Limit SITE_CHMOD>
AllowAll
</Limit>
・・・・・・・・・・・
Anonymous(匿名)でログイン出来ないようにする。
<Anonymous ~ftp>」から「</Anonymous>」まで全ての行をコメントアウトする
# <Anonymous ~ftp>
# User ftp
# Group ftp
#
# # We want clients to be able to login with "anonymous" as well as "ftp"
# UserAlias anonymous ftp
#
# # Limit the maximum number of anonymous logins
# MaxClients 10
#
# # We want 'welcome.msg' displayed at login, and '.message' displayed
# # in each newly chdired directory.
# DisplayLogin welcome.msg
# DisplayChdir .message
#
# # Limit WRITE everywhere in the anonymous chroot
# <Limit WRITE>
# DenyAll
# </Limit>
#</Anonymous>
・・・・・・・・・・・・・・・・・・・・・・
FTP over SSL
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd.log
TLSProtocol SSLv23
TLSCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
TLSRequired off
TLSVerifyClient off
TLSRSACertificateFile /etc/pki/CA/certs/server.crt
TLSRSACertificateKeyFile /etc/pki/CA/certs/newkey.pem
TLSVerifyClient off
</IfModule>