Linuxエンジニアリング   行動予定表の問い合わせ
 
 

  Linuxサーバー構築 サイトマップ


  apache2によるHTTPSサーバー構築
  ■設定条件■
・コモンネームwww.hoge.jp
・秘密鍵ファイルhogejp.key/etc/ssl/key/hogejp.key
・CSRファイルhogejp.csr/etc/ssl/hogejp.csr
・証明書ファイルhogejp.crt/etc/ssl/crt/hogejp.crt
・中間証明書ファイルinter.crt/etc/ssl/crt/inter.crt
・LinuxOSCentOS6.x
  ■必要なパッケージの入手とインストール■ # cd /usr/local/scr # wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-1.5.2.tar.gz # wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-util-1.5.4.tar.gz # wget http://archive.apache.org/dist/httpd/httpd-2.4.7.tar.gz # yum install openssl # openssl version # yum install pcre-devel # yum install openssl-devel # yum install libxml2-devel # yum install libcurl-devel # # tar xvfz apr-1.5.2.tar.gz # cd apr-1.5.2 # ./configure # make # make test # make install # # tar xvfz apr-util-1.5.4.tar.gz # cd apr-util-1.5.4 # ./configure --with-apr=/usr/local/apr # make # make test # make install # # tar xvfz httpd-2.4.7.tar.gz # cd httpd-2.4.7 # ./configure --with-apr=/usr/local/apr --enable-ssl --enable-cgi --enable-so --enable-rewrite --prefix=/usr/local/apache2 (※上記に続けて一行のコマンド) # make # make install # useradd apache2 ※ apache2用のユーザを作成 ■iptablesの設定■ # vi /etc/sysconfig/iptables # cat /etc/sysconfig/iptables(一部抜粋) -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT ※ httpポートを許可 -A INPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT ※ httpsポートを許可 # /sbin/service iptables restart ■apache2の設定ファイル■ # vi /usr/local/apache2/conf/httpd.conf # cat /usr/local/apache2/conf/httpd.conf(一部抜粋) ServerRoot "/usr/local/apache2" Listen 80 LoadModule include_module modules/mod_include.so LoadModule ssl_module modules/mod_ssl.so LoadModule cgid_module modules/mod_cgid.so LoadModule cgi_module modules/mod_cgi.so LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule socache_shmcb_module modules/mod_socache_shmcb.so LoadModule rewrite_module modules/mod_rewrite.so User apache2 Group apache2 ServerAdmin webmaster@cloud-board.net ServerName serverXX.cloud-board.net:80 <Directory /> # AllowOverride none AllowOverride all # Require all denied Require all granted </Directory> DocumentRoot "/usr/local/apache2/htdocs" <Directory "/usr/local/apache2/htdocs"> Options +ExecCGI -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> <IfModule dir_module> DirectoryIndex index.scr index.cgi index.html </IfModule> #CustomLog "logs/access_log" common CustomLog "logs/access_log" combined ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" <Directory "/usr/local/apache2/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> AddHandler cgi-script .cgi .scr .pl # Virtual hosts Include conf/extra/httpd-vhosts.conf # Various default settings Include conf/extra/httpd-default.conf # Secure (SSL/TLS) connections Include conf/extra/httpd-ssl.conf <IfModule ssl_module> SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> # vi /usr/local/apache2/conf/extra/httpd-default.conf # cat /usr/local/apache2/conf/extra/httpd-default.conf ServerTokens Prod ServerSignature Off HostnameLookups Off # cd /usr/local/src/httpd2.4.7/httpd-2.4.7/build/rpm # cp httpd.init httpd # vi httpd # cat httpd # httpd=${HTTPD-/usr/sbin/httpd} httpd=${HTTPD-/usr/local/apache2/bin/httpd} # pidfile=${PIDFILE-/var/run/${prog}.pid} pidfile=${PIDFILE-/usr/local/apache2/logs/httpd.pid} # CONFFILE=/etc/httpd/conf/httpd.conf CONFFILE=/usr/local/apache2/conf/httpd.conf # mv httpd /etc/init.d/ ■起動ファイルの確認とその他設定■ # chkconfig --add httpd # chkconfig httpd on # chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off # /etc/init.d/httpd start ■サーバ用秘密鍵/公開鍵の作成■ ▼ サーバ用秘密鍵の作成 # cd /etc/ssl # openssl genrsa -des3 -out hogejp.key 4096 ※ 秘密鍵生成 Enter pass phrase for hogejp.key: password Verifying - Enter pass phrase for hogejp.key: password ※起動時のパスフレーズが必要な通常の秘密鍵生成※ # openssl genrsa -des3 -out hogejp.key 4096 ※ 起動時のパスフレーズ入力必要 Enter pass phrase for hogejp.key: password Verifying - Enter pass phrase for hogejp.key: password ※起動時のパスフレーズを省略する場合の秘密鍵生成※ # openssl genrsa -out hogejp.key 4096 ※ 起動時のパスフレーズ無し Enter pass phrase for hogejp.key: password Verifying - Enter pass phrase for hogejp.key: password ▼サーバ用公開鍵の作成 # openssl req -new -key hogejp.key -out hogejp.csr  ※ 公開鍵生成 Country Name (2 letter code) [XX]:JP // JP State or Province Name (full name) []: // Tokyo Locality Name (eg, city) [Default City]: // Minato Organization Name (eg, company) [Default Company Ltd]: // HOGEHOGE INC. Organizational Unit Name (eg, section) []: // HOGE Div Common Name (eg, your name or your server's hostname) []: // www.hoge.jp Email Address []: //空白 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: //空白 An optional company name []: //空白
※コモンネームwww.hoge.jp
※秘密鍵ファイルhogejp.key/etc/ssl/key/hogejp.key
※CSRファイルhogejp.csr/etc/ssl/hogejp.csr
※証明書ファイルhogejp.crt/etc/ssl/crt/hogejp.crt
※中間証明書ファイルinter.crt/etc/ssl/crt/inter.crt
■apache2のconfファイル設定(ポート番号80)■ # vi /usr/local/apache2/conf/extra/httpd-vhosts.conf # cat /usr/local/apache2/conf/extra/httpd-vhosts.conf(必要部分のみ抜粋) <VirtualHost *:80> ServerAdmin webmaster@hoge.jp DocumentRoot "/usr/local/apache2/htdocs" ServerName www.hoge.jp ErrorLog "logs/www-error_log" CustomLog "logs/www-access_log" combined # <Directory /> Options +FollowSymLinks AllowOverride All Require all granted ※ 接続許可(設定) #Require all denied ※ 接続拒否(コメントアウト) RewriteEngine on </Directory> <Directory "/usr/local/apache2/htdocs/"> ※ ドキュメントのトップディレクトリを設定 Options -Indexes +FollowSymLinks +MultiViews AllowOverride All ※ .htaccess を許可する RewriteEngine on ※ URLの書き換えを許可 AddHandler image/jpeg .jpeg .jpg AddHandler image/png .png AddHandler text/css .css AddHandler application/x-javascript .js AddHandler video/mp4 .mp4 .3gp .wmv Require all granted ※ すべての接続を許可 </Directory> ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/ ※ CGIスクリプトの実行ディレクトリを指定 <Directory "/usr/local/apache2/cgi-bin"> AllowOverride None ※ .htaccess を許可しない Options +ExecCGI -Indexes -MultiViews +SymLinksIfOwnerMatch AddHandler cgi-script .cgi .scr .pl .php AddHandler image/jpeg .jpeg .jpg ※ CIGディレクトリで画像を許可(*.jpge, *jpg) Require all granted ※ すべての接続を許可 </Directory> <Directory "/usr/local/apache2/htdocs/user99/"> ※ "user99" ディレクトリに対する個別設定 AllowOverride All ※ .htaccess を許可 Options +ExecCGI -Indexes -MultiViews +SymLinksIfOwnerMatch ※ CGIスクリプトの実行を許可 #Require all granted Require all denied ※ すべての接続を拒否(ユーザ認証OKだけ許可する) AddHandler cgi-script .cgi .pl .php AddHandler image/jpeg .jpeg .jpg AddHandler video/mp4 .mp4 .3gp .wmv AddHandler image/png .png AddHandler text/css .css AddHandler application/x-javascript .js # AuthType Basic ※ "all denied"(拒否)に対してBasic認証を行う AuthName "SecureZone" AuthUserFile /usr/local/apache2/.htpasswd Require user user999 ※ 認証許可ユーザ名は "user999" のみ </Directory> </VirtualHost> ■apache2のconfファイル設定(ポート番号443)■ # vi /usr/local/apache2/conf/extra/httpd-ssl.conf # cat /usr/local/apache2/conf/extra/httpd-ssl.conf(必要部分のみ抜粋) Listen 443 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 SSLPassPhraseDialog builtin SSLSessionCache "shmcb:/usr/local/apache2/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 <VirtualHost *:443> DocumentRoot "/usr/local/apache2/htdocs" ServerName www.linux55.com:443 ServerAdmin webmaster@linux55.com ErrorLog "/usr/local/apache2/logs/error_log" TransferLog "/usr/local/apache2/logs/access_log" # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on SSLCertificateFile "/etc/ssl/crt/linux55com.crt" SSLCertificateKeyFile "/etc/ssl/key/linux55com.key" SSLCACertificateFile "/etc/ssl/crt/inter.crt" <Directory /> Options +FollowSymLinks AllowOverride None </Directory> # <Directory /usr/local/apache2/htdocs/> AllowOverride All Options -Indexes +FollowSymLinks +MultiViews Require all granted ※ 接続許可(設定) #Require all denied ※ 接続拒否(コメントアウト) RewriteEngine on AddHandler cgi-script .scr .cgi .pl AddHandler image/jpeg .jpeg .jpg AddHandler video/mp4 .mp4 .3gp .wmv AddHandler image/png .png AddHandler text/css .css AddHandler application/x-javascript .js Require all granted # #AuthType Basic ※ 認証の場合はコメントアウト(以下4行) #AuthName "SecureZone" #AuthUserFile /usr/local/apache2/.htpasswd #Require user user999 ※ 認証許可ユーザ名は "user999" のみ # <Directory "/usr/local/apache2/htdocs/user999/"> AllowOverride All Options +ExecCGI -Indexes -MultiViews +SymLinksIfOwnerMatch Require all granted AddHandler cgi-script .scr .cgi .pl AddHandler image/jpeg .jpeg .jpg AddHandler video/mp4 .mp4 .3gp .wmv AddHandler image/png .png AddHandler text/css .css AddHandler application/x-javascript .js #AuthType Basic #AuthName "SecureZone" #AuthUserFile /usr/local/apache2/.htpasswd #Require user hector </Directory> # <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/usr/local/apache2/cgi-bin"> SSLOptions +StdEnvVars </Directory> # BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "/usr/local/apache2/logs/ssl_request_log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" # </VirtualHost> ■http → https へ強制移行■ ▼ http://〜 へのアクセスをすべてhttps://〜 へURLを書き換える # vi /usr/local/apache2/htdocs/.htaccess # cat /usr/local/apache2/htdocs/.htaccess RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] # #AuthType Basic ※ 認証の場合はコメントアウト(以下4行) #AuthName "SecureZone" #AuthUserFile /usr/local/apache2/.htpasswd #Require user user999 ※ 認証を許可するユーザ名は "user999" のみ # /etc/init.d/httpd start //// エラーが出ずにリモート端末からhttps://〜 で接続できればHTTPSサーバの構築は完了です ////


  * CentOSの名称およびロゴは、CentOS ltdの商標または登録商標です。
* Linuxは、Linus Torvalds氏の登録商標または商標です。
* Linux Tux author and copyright holder: Larry Ewing, Simon Budig, Anja Gerwinski.
  * Ubuntuは、Canonical Ltd.の登録商標です。
* Windowsは、米国Microsoft Corporationの登録商標または商標です。
* その他記載の商品名、会社名は、それぞれの会社の登録商標または商標です。


     

    行動予定表の問い合わせ   Linuxエンジニアリング