SSL Library Error: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small AH00016: Configuration Failed

$ sudo less /var/log/httpd/error_log
SSL Library Error: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small AH00016: Configuration Failed

キーが短すぎるの意味がそのままで、今は1024bitだと短いと判断されるらしい。
2048で作り直す必要がある。

うーん、前途多難だな

RHEL8のSELinuxの無効化

(13)Permission denied: AH00072: make_sock: could not bind to address [::]:20080
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:20080

SELinuxとは? : 強制アクセス制御を実現するセキュリティ機構
Security-Enhanced-Linux
アクセス制御に使う

$ getenforce
Enforcing
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33

### 一時的に無効化
$ sudo setenforce 0
$ getenforce
Permissive

### 恒久的に無効化
$ sudo cp -piv /etc/selinux/config /etc/selinux/config.`date “+%Y%m%d”`
$ sudo vi /etc/selinux/config

# SELINUX=enforcing
SELINUX=disabled

$ sudo systemctl restart httpd
$ systemctl status httpd.service

なるほど

vsftpdとは?

LinuxなどUNIX系OSでよく利用されるFTPサーバの一つ
OSに常駐するデーモンプログラムの一種で、FTPによる接続を受け付け、指定されたディレクトリ内での送受信を行うことができる

sudo yum list | grep ftp
sudo yum install vsftpd

なるほど、わかってきた

minetypeとは

$ cat /usr/share/mime/packages/freedesktop.org.xml

// 拡張子の確認
$ mimetype article.hpscript
article.hpscript:

$ sudo vi /usr/share/mime/packages/freedesktop.org.xml

  <mime-type type="application/hpscript">
    <comment>Hpscript File</comment>
    <comment xml:lang="ja">Hpscript ファイル</comment>
    <acronym>Hpscript</acronym>
    <expanded-acronym>Hpscript file</expanded-acronym>
    <glob pattern="*.hpscript"/>
  </mime-type>

// mime database更新
$ sudo update-mime-database /usr/share/mime
$ mimetype article.hpscript
article.hpscript: application/hpscript

うおおおおおおおおおおおおお
sugeeeeeeeeeeeee

HTTP_PROXY, HTTPS_PROXY, FTP_PROXYとは

HTTPプロキシは高性能なコンテンツフィルタ
Webトラフィックを検査して、ウィルス、その他の種類の侵入可能性があるコンテンツを識別する

環境変数のHTTPS_PROXYは、サーバにHTTPS接続したい時に使用するproxyの設定

HTTP_PROXYは接続先がhttp://target…
HTTPS_PROXYは接続先がhttps://target…

proxy設定はOS側からネットにアクセスする際に経由するって意味合いね

phpPgAdmin

phpPgAdminは、PostgreSQLサーバをwebブラウザ上で管理できるツール
コマンドなして操作できる

Github: https://github.com/phppgadmin/phppgadmin
Source: https://sourceforge.net/projects/phppgadmin/

### UbuntuへのphpPgAdminインストール
$ wget http://downloads.sourceforge.net/project/phppgadmin/phpPgAdmin%20%5Bstable%5D/phpPgAdmin-5.1/phpPgAdmin-5.1.tar.gz
$ tar zxvf phpPgAdmin-5.1.tar.gz
$ rm phpPgAdmin-5.1.tar.gz

### 設定
conf/config.inc.php

	$conf['default_lang'] = 'japanese';

$ php -S 192.168.56.10:8000

なるほど、なんとなくわかった。

[Apache] SSL証明書作成

$ httpd -version
Server version: Apache/2.4.37 (Red Hat Enterprise Linux)
$ sudo yum -y install openssl
$ sudo yum -y install mod_ssl

$ cd /etc/httpd/ssl/conf
$ sudo su root
# openssl genrsa 1024 > server.key
# openssl req -new -key server.key > server.csr
# openssl x509 -in server.csr -days 36500 -req -signkey server.key > server.crt

うん、OKかな

Apacheログローテーションとは?

logroteとは、ログファイルのローテーションを行うプログラム
ログファイルを別名でバックアップし、古くなったログファイルを順次削除する
apacheをパッケージからインストールした場合は、ログローテーションは自動でされる。以下のように表示されればインストールされている
$ rpm -qa|grep logrotate
logrotate-3.14.0-4.el8.x86_64

/var/log/httpd/*_log : ローテートするファイルを指定
daily: ローテーションを行う間隔を指定 daily, weekly, monthlyがある
rotate 2: 保存されるアーカイブファイルの数
missingok: missingokはログファイルがなくてもエラーにならない、nomissingokはログファイルがないとエラー
ifempty: ログファイルが空でもローテート、noifemptyは空だとローテーションしない
dateext: アーカイブされたファイルの末尾に年月日が付与される
postrotate: endscripまでのコマンドをログローテーション後に実行
/sbin/service httpd reload > /dev/null 2>/dev/null || true: httpdの再起動を行う処理。httpdが新たに作成したログファイルに記録し始める。
compress : gzipで圧縮
create 0644 hoge hoge: ローテーション後、空のログファイル作成 [パーミッション][ユーザ名][グループ名]
su root root : ローテートするユーザをrootに指定

なるほどねー 
一見複雑そうに見えるが、一つ一つ潰していくと、理解が深まるな

Apache virtualhostに記入する項目

### *.confの書き方
– Include: インクルード
e.g. Include /etc/httpd/conf/httpd.conf

– PidFile: PidFileは、サーバーがプロセスID(PID)を記録するファイル

– ScoreBoardFile: 他のプロセスから統計情報にアクセスできるようになる

– KeepAliveTimeout: 要求がなされてから接続を閉じるまでの、サーバーが待機する時間を秒数で設定。サーバーが要求を受信すると、代わりにTimeoutディレクティブが適用される。デフォルトでは、KeepAliveTimeoutは15秒に設定。

– MinSpareServers、MaxSpareServers: prefork MPMでのみ使用。着信要求の数に基づいて適切な数のスペアサーバープロセスを維持することで、 Apache HTTP サーバー が検出された負荷に対して動的に適応する方法を調整

– StartServers: 起動時に作成されるサーバー プロセス数を設定。Web サーバーがトラフィックの負荷に基づいて動的にサーバー プロセスを停止したり作成したりするので、このパラメータを変更する必要はない。 Web サーバーは、起動時に、preforkMPM 用に 8 サーバープロセスを、 workerMPM用に 2サーバープロセスを起動するように設定される。

– IfModule mod_ssl.c: mod_sslの設定。IfModuleは指定したモジュールが存在したときに処理される

– Listen: Apache がクライアントからのリクエストを受け付けるポート番号を指定するのに使用
以下のように複数指定することもできる
Listen 80
Listen 8080

– Group: サーバーがリクエストに応答する際に所属するグループ

– User:サーバがリクエストに応答する際に用いるユーザ ID

### VitualHostの書き方
– ServerAdmin: サーバがクライアントに送るエラーメッセージに含める電子メールアドレス
e.g. ServerAdmin root@localhost
– ServerName: 自分自身のホスト名を表す時に使用するホスト名とポート番号を設定
– DocumentRoot: Webから見えるメインのドキュメントツリーになるディレクトリ
– ErrorLog: エラーログを出力する場所を設定
– CustomLog: アクセスログを出力する場所, combinedはログのフォーマット
– ScriptAlias: CGI(Perl)を利用するための設定
– SSLEngine: On/OFFで、SSLを有効にするかどうかを指定
– SSLProtocol:使用するSSLプロトコルのバージョンを指定
– SSLCipherSuite: SSL機能で使用可能とする暗号種別を指定。ディレクティブに指定した暗号種別とクライアントが使用できる暗号種別との間で一致するものがあれば,SSL通信が確立されHTTPリクエストを受信
– SSLCertificateFile: Webサーバの証明書を格納したファイル名を指定。サーバ認証するためにWebサーバの証明書を先頭として,中間CA(認証局),ルートCAの順にCAの証明書を連結することができる。証明書はPEM形式。
– SSLCertificateFile: Webサーバの秘密鍵のファイル名を指定。秘密鍵のファイルはPEM形式。RSA暗号を利用した秘密鍵のファイルおよび楕円曲線暗号を利用した秘密鍵のファイルについてそれぞれ一つ指定
– SetEnvIf:クライアントからのリクエストを基に環境変数を定義

なるほど、中々いい感じ。