【Linux】サポート終了したCentOS6でyumが使えるようにする

2024年2月から、Gmailのガイドラインが変更になり、SPF・DKIM・DMARCのメール認証を設定しないといよいよメールが届きにくくなるようです。
現在多くの稼働中のシステムを保守していますが、すべてのシステムでSPF・DKIM・DMARCは設定済みです。
(念のため全システムのメールのヘッダを確認しました。)

DKIMの設定が少し面倒なだけで、設定自体は難しくありません。

2024年1月の下旬になったところで、以前仕事したことがあるクライアントから連絡が来ました。

「現在、稼働しているサービスのメール認証を設定してほしい」

情報さえそろっていれば2,3時間あればできるだろうと、
依頼を受けるつもりで、システムの詳細を聞いたところ、
サーバーはVPSで、OSが「CentOS6」であることがわかりました。

VPSで構築されている場合、DKIMは自前でサービスをインストールして設定する必要があります。
通常はopenDkimというサービスを入れます。

しかし、CentOS6はすでにサポートが切れているため、
そのままではyumでインストールすることはできません。

そこで、ミラーサイトを「vault.centos.org」に変更します。

何か所かある

の行をすべて頭に#をつけてコメントアウトします。

次に、やはり何か所かある

の行のURLの「mirror.centos.org」をすべて「vault.centos.org」に変更します。

これでyumが使えるようになったので、openDkimをインストールして
無事、DKIMを設定できました。

【Linux】CentOS6にPython2.7をインストールして自動的に有効にする

先日Let’s EncryptのログにWarningが出ていました。

証明書の更新はできていますが、
Let’s Encrypt自身のアップグレードでWarningが出ていたようです。
アップグレードするには、現在インストールされているPython2.6はサポートが廃止される予定なので
まずはPythonをアップグレードしろとのこと。

しかしCentOS6の標準では2.6までしか入りませんのでリポジトリのインストールから始めます。

リポジトリのインストール

Python2.7のインストール

これだけではpythonコマンド使用時のバージョンは2.7になりません。
2.7が自動的に有効になるように設定しましょう。

これで~/certbot-auto renewを実行すれば
Let’s EncryptのrenewコマンドでLet’s Encrypt自身のアップグレードもされるようになりました。

しかし、自動更新はたいていの場合、cronで設定されているかと思います。
cronで実行される場合はまだpython2.7が有効になっていません。

cronで実行するコマンドでpython2.7を有効にするには
crontabでの記述を次のようにします。

(毎日AM5時にrenewを実行する場合)

【Linux】Let’s Encryptで取得した証明書を削除して更新対象からはずす

SSL証明書を無料で取得できるLet’s Encryptで、
サーバー移行やサイト閉鎖などによって証明書が不要になった場合は
revokeオプションで対象のドメインの証明書を削除する必要があります。
証明書の更新はcronで自動更新していると思いますので
ある日ログを確認したらエラーが出続けていたということがないよう、忘れずに証明書を削除しましょう。

certbot-autoのrevokeオプションを実行するだけです。

certbotの古いバージョンではfullchainなどのファイルに対してもrevokeが必要でしたが
最新のcertbotではcert1.pemを削除するだけでOKです。この状態で

を実行すれば
revokeしたドメインは更新対象から外れています。

あとは、Apacheなどのバーチャルホストの設定の変更も忘れないようにしましょう。
そのままだと削除した証明書をロードしようとしてエラーとなり
ウェブサーバーが起動できないという事態になってしまいます。

【CentOS】「ntpdが停止していますがPIDファイルが残っています」

あるシステムから自動送信されているメールが届かないケースが増え、原因を探っていました。
色々調べた結果、メールの送信日時がおかしいことがわかり、
サーバーを調べると、サーバー自体の時間がたしかにずれていました。

ntpサーバーが起動していないのか?確認してみました。

ん?
停止しているなら起動しよう

メッセージの通り、PIDファイルが残っているので
起動できないようです。
PIDファイルを削除しましょう。

よし、これで起動できますね。

はい、ロックファイルを削除しましょう。

起動できました。

【Linux】CentOS5でLet’s Encryptを使ってマルチドメインのSSL証明書を発行する

CentOS5でシステムを運用しています。2010年にリリースしたシステムです。
新しいOSに乗り換えるべきなんですが、いろいろと複雑な事情があり、もう少し延命しなければなりません。

このシステムのSSL証明書を、無料のLet’s Encryptで取得することになりました。
Let’s Encryptについての記事はこちら

SSL証明書は無料で取得できる時代に

また、同じサーバー上で、
本番環境の「www.ドメイン名」とステージング環境の「stage.ドメイン名」が動いており、
マルチドメイン証明書を取得することにしました。

しかし、OSが古いことが原因で、途中さまざまな壁にあたり、都度、対処が必要でした。

以下、備忘録です。

まず、Let’s Encryptを利用するために公式の「certbot」というツールがあるのですが、
これがCentOS6以降でないと使えません。
いきなりの壁です。

しかし、CentOS5でも使える「dehydrated」という非公式のツールがありますので
こちらを使ってSSL証明書を取得することにします。

dehydratedはgitでインストールしますが、
CentOS5では標準でgitはありません。
そこでgitのインストールから始めます。

CentOS5にgitをインストールするため、EPELリポジトリを追加します。

しかし、ここでまた問題が。
CentOS5は2017年3月31日でサポートが終了したため
公開していたミラーサイトからリポジトリが削除されています。

そこで、古いOSをyumリポジトリとして公開している

http://vault.centos.org/

というサイトがありますので
そこをyumリポジトリに追加してgitをインストールします。

を開きます。

という行がいくつかあります。
この行をコメントアウトし、代わりに次の行を追加します。

6箇所くらいあるので、それぞれ、上記の変更を行います。
私の環境はCentOS5.5ですので上記のディレクトリに「/5.5/」とありますが、
ここはバージョンによって適宜変更してください。

これでリポジトリが登録できたことになっているので、
yumでgitをインストールします。

gitがインストール出来たら、やっと目的のツール「dehydrated」のインストールです。

インストールできたら、さっそくdehydratedを使ってSSL証明書を取得してみます。

まず、一時ディレクトリを作成します。

次にApacheの設定ファイルを作成します。

dehydrated.confの内容は下記のとおりです。

ここまででApacheを再起動します。

次に、dehydratedの設定ファイルを作成します。
dehydratedをインストールした場所に移動し、

同じディレクトリにdomains.txtというファイルを作成します。

このファイルには、SSL証明書を発行するドメインを記述します。
このとき、行を分けて複数のドメインを記述すると
ドメインごとに証明書が発行されますが、
1行にスペース区切りで複数のドメインを記述すると
1つのマルチドメイン証明書として発行されます。

今回は目的だったマルチドメイン証明書の記述を行います。

最初に記述したドメインがコモンネームとなります。

そして、証明書発行の前に、アカウントを登録する必要があります。

Done!と表示されたら完了です。

いよいよ証明書の発行です。

Done!と表示されたら証明書の発行完了です。
準備が大変でしたが、あっけなく発行できました。

あとは、ApacheのVirtualHostの設定で
複数のドメインに対して証明書ファイルを設定します。

いろんな書き方があると思いますが
私はssl.confにすべて記述しています。

ssl.conf(一部)

Apacheを再起動して完了です。

あとは、自動更新の設定ですが、cronで以下のようなコマンドを実行するだけです。

これで証明書の更新も勝手にやってくれます。たまにログは確認しましょう。

これでCentOS5でもLet’s Encryptでマルチドメイン証明書が利用できました。
無料ってのがすごいですね。