デスクトップPCからインターネットにつながらなくなった

他のデスクトップPCやスマホからの wifi には問題なし。

以下、解決策。
●イーサネットの省電力設定を無効にする
「電源の管理」タブ → 「電力の節約のために、コンピュータでこのデバイスの電源をオフにできるようにする」を OFF
イーサネットの各種設定を見直す

●「詳細設定」タブで次の設定を ”無効” に変更
・Advanced EEE
・NSオフロード
・受信側スケーリング
・グリーンイーサネット
・省電力型イーサネット(EEE)

下記ページの情報

https://tomokatsu.hatenablog.com/entry/2021/11/05/201044

let's encrypt から さくらのSSL に乗り換え

CentOS6.8 で let's encrypt の自動更新が出来なくなった。
自動更新に必要な certbot-auto というプログラムが Python 3.5 以上を必要としているが、サポート期限切れである CentOS6.8 では現在 Python 3.4 までしかインストールできないようだ。

SSL証明書の更新ができないと困るので、一時的にlet's encrypt から さくらのSSL に乗り換えることにした。

さくらのSSL(990円) のSSL証明書はマルチドメインに対応していないので、ドメインの数だけ証明書の発行が必要になる。

参考:

https://www.idcf.jp/rentalserver/user-support/knowledge/ssl/sni.html

最初に必要なことはCSRの作成

SSL証明書の発行に必要なCSRのつくり方

openssl が必要なのでインストールされているか確認
--------------------------------------------
openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
--------------------------------------------
OK
秘密鍵を置くディレクトリに移動。

/etc/ssl というフォルダがあったのでその中に sakurassl-sslkey というディレクトリを作ってそこに保存した。

移動
--------------------------------------------
cd /etc/ssl/sakurassl-sslkey
--------------------------------------------

OpenSSL のコマンドで RSA 暗号方式の秘密鍵を作成する場合
--------------------------------------------
openssl genrsa コマンドを利用
--------------------------------------------

秘密鍵ファイルの生成
--------------------------------------------
openssl genrsa -out ○○○.key 2048
--------------------------------------------
これで秘密鍵ができる

CSR生成
--------------------------------------------
openssl req -new -key ○○○.key -out ○○○.csr
--------------------------------------------

openssl genrsa -out wwwexamplecom.key 2048
openssl genrsa -des3 2048 > www.*****.jp.key
必須項目(他は空欄でいい)
--------------------------------------------------------------
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Aichi
Locality Name (eg, city) [Default City]:Nagoya
Organization Name (eg, company) [Default Company Ltd]:Nomu
Common Name (eg, your name or your server's hostname) []:利用するドメイン
--------------------------------------------------------------

入力が終わるとCSRができる。

これを使ってさくらのSSLの証明書を購入。

SSLの証明書を完了させるにはドメインの所有者確認があるので、以下のURLに認証ファイルをアップロードする。
http://example.com/.well-known/pki-validation/[ランダムな文字列].txt

購入後メールで証明書が届くのでサーバーにアップロードして
/etc/httpd/conf.d/vhost-le-ssl.conf ファイルを書き換える。
↑vhost-le-ssl の le はレッツエンクリプトの意味だと思う。
レッツエンクリプトをインストール時に作られたファイルを流用したことになる。
書き換える値は三つ
--------------------------------------------------------------------------------
SSLCertificateFile /etc/pki/tls/certs/localhost.crt ← 秘密鍵のファイルを指定
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key ← サーバー証明書のファイルを指定
SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt ← 中間証明書のファイルを指定(中間証明書が無い場合は省略可)
--------------------------------------------------------------------------------

構文チェック
---------------------------------------------------
httpd -t
---------------------------------------------------

apache 再起動
---------------------------------------------------
service httpd restart
---------------------------------------------------

証明書が更新されていることを確認。

let's encrypt更新時にエラー(Warning)が出ていた(2022年5月)

let's encrypt を cron で更新した際に飛んでくるメールにエラー(WARNING)が記載されていた。
-------------------------------------------------------------------------
WARNING: couldn't find Python 3.5+ to check for updates.
Skipping upgrade because new OS dependencies may need to be installed.

To upgrade to a newer version, please run this script again manually so you can
approve changes or with --non-interactive on the command line to automatically
install any required packages.
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/hyogen.info.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The following certs are not due for renewal yet:
/etc/letsencrypt/live/hyogen.info/fullchain.pem expires on 2022-08-06 (skipped)
No renewals were attempted.
No hooks were run.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-------------------------------------------------------------------------

Python 3.5+ が見つからないとのこと。
いつからエラーが出ていたか過去のメールを調べてみたら2020年1月の時点でエラーが確認できた。
一年五か月前からエラーが出てはいるが、証明書の有効期限は更新されている。

メールにしたがって manually(手動)で更新して見る。

-------------------------------------------------------------------------
/var/myshellscript/lets_encrypt_renew.sh
-------------------------------------------------------------------------

もしくは

-------------------------------------------------------------------------
# sudo /root/certbot-auto renew --post-hook "sudo service httpd restart"
-------------------------------------------------------------------------

centos-release-scl(10:7-4.el6.centos)と centos-release-scl-rh(2-4.el6.centos)がインストールできないとエラーが出る
-------------------------------------------------------------------------

===================================================
パッケージ アーキテクチャ バージョン リポジトリー 容量
===================================================
インストールしています:
centos-release-scl noarch 10:7-4.el6.centos extras 12 k
依存性関連でのインストールをします。:
centos-release-scl-rh noarch 2-4.el6.centos extras 12 k

トランザクションの要約
===================================================
インストール 2 パッケージ

総ダウンロード容量: 24 k
インストール済み容量: 39 k
パッケージをダウンロードしています:
http://vault.centos.org/6.8/extras/x86_64/Packages/centos-release-scl-7-4.el6.centos.noarch.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。
To address this issue please refer to the below knowledge base article

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please open a ticket with Red Hat Support.

http://vault.centos.org/6.8/extras/x86_64/Packages/centos-release-scl-rh-2-4.el6.centos.noarch.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。

パッケージのダウンロードでエラー:
10:centos-release-scl-7-4.el6.centos.noarch: failure: Packages/centos-release-scl-7-4.el6.centos.noarch.rpm from extras: [Errno 256] No more mirrors to try.
centos-release-scl-rh-2-4.el6.centos.noarch: failure: Packages/centos-release-scl-rh-2-4.el6.centos.noarch.rpm from extras: [Errno 256] No more mirrors to try.

Could not enable SCL. Aborting bootstrap!
-------------------------------------------------------------------------

centos-release-scl と centos-release-scl-rh の該当バージョンがインストールされていないのか確認

-------------------------------------------------------------------------
yum list installed | grep centos
-------------------------------------------------------------------------
該当なし。

インストールはできるのか確認。
-------------------------------------------------------------------------
yum list | grep centos
-------------------------------------------------------------------------

インストール可能な一覧には含まれている
-------------------------------------------------------------------------
centos-release-gluster7.noarch 1.0-1.el6.centos extras
centos-release-scl.noarch 10:7-4.el6.centos extras
centos-release-scl-rh.noarch 2-4.el6.centos extras
centos-release-storage-common.noarch 1-2.el6.centos extras
-------------------------------------------------------------------------

しかしインストールはできない。

http://vault.centos.org/6.8/extras/x86_64/Packages/centos-release-scl-rh-2-4.el6.centos.noarch.rpm にブラウザでアクセスしてみると

centOS6.8 には centos-release-scl-7-3.el6.centos.noarch.rpm しか提供されていない。

centOS6.10 には 7-4 があった。

postfixの送信履歴の見方

利用しているメーラー(MTA)の確認
----------------------------------
alternatives --display mta
----------------------------------

postfixを利用している場合は下記の結果になる
----------------------------------
リンクは現在 /usr/sbin/sendmail.postfix を指しています
----------------------------------

sendmaiを利用している場合は下記の結果になる
----------------------------------
リンクは現在 /usr/sbin/sendmail.sendmai を指しています
----------------------------------

メールログの場所
---------------------
/var/log/maillog
---------------------

【stripe】webhookでデータ取得【PHP】

webhookで受信したデータから特定の情報を取り出す覚書

PHPでの書き方

//customer_id を使ってメールアドレスを取得
$customer = \Stripe\Customer::retrieve($customer_id);
$customer_email = $customer->email;

【stripeのwebhookテスト】サブスクで支払いエラーを出す

stripe で webhook の動作テストとして、サブスクリプションの支払いエラーを出す手順

1.stripe の dashboard をテストモードにして顧客を作成。

2.顧客のクレジットカード番号は以下のものを登録

4000 0000 0000 0341

stripe の document(組み込みをテストする)

3.この顧客でサブスクリプションを作成

charge.failed イベントが発生する。charge.failed をリッスンしておけば webhook で通知が受け取れる。

ipアドレス別でサーバーに接続している数を調べるコマンド

ipアドレス別でサーバーに接続している数を調べるコマンド
-----------------------------------------------------------
netstat -tan | awk '{print $5}' | cut -d : -f1 | sort -n | uniq -c | sort -n
-----------------------------------------------------------

オプションの説明
a → すべてのネットワーク接続を表示する
n → DSN逆引きを行わない(ipアドレスで表示)
t → TCPのみを表示する

awk '{print $5}' → 5フィールド目を取り出す

cut -d : -f1 → デリミタ(区切り文字)「:」を指定。フィールド1を取り出す

sort -n → データを文字ではなく、数値として並び変える。次のuniq が隣り合った行しか比較しないので必要

uniq -c → 各行の前に出現回数を出力する。隣り合った行しか比較しない

sort -n → データを文字ではなく、数値として並び変える。出現回数順に並べ替える

OOM発動時にサーバーを再起動

現在の設定を確認
--------------------------------------------
# sysctl vm.panic_on_oom kernel.panic
vm.panic_on_oom = 0
kernel.panic = 0
--------------------------------------------

vm.panic_on_oom
OOM Killer が実行される際に、カーネルパニックを起こさせるかを制御するパラメータ

0 → カーネルパニックしない
1 → カーネルパニックする。但し cgroup 制限により物理メモリがまだ残っている場合にはカーネルパニックしない。
2 → 必ずカーネルパニックする

カーネルパニックとは、オペレーティングシステム(OS)のカーネル部分において、何らかの理由で致命的なエラーが発生し、安全に復旧することができなくなった状態。

kernel.panic = 0 → なにもしない
kernel.panic = 30 → 30秒後にリブート

--------------------------------------------
sysctl -a | grep vm.over
--------------------------------------------

現状
--------------------------------------------
vm.overcommit_memory=1
vm.panic_on_oom=1
kernel.panic=10
--------------------------------------------

vm.overcommit_memory:オーバーコミットするかどうかの設定
vm.overcommit_memory = 0 → オーバーコミット有効。実メモリの大きさまで割り当てる。
vm.overcommit_memory = 1 → オーバーコミット有効。実メモリ以上に割り当てる。

sysctl.conf を下記のように変更
#oom になったらカーネルパニックにさせてサーバーを再起動
--------------------------------
vm.overcommit_memory=1
vm.panic_on_oom=1
#15秒後に再起動
kernel.panic=15
--------------------------------

設定を反映
--------------------------------
sysctl -p
--------------------------------

httpdやmysqldを監視するmonitを導入する

monit を導入する

ダウンロードできるか確認
-----------------------------------
yum list available | grep monit
-----------------------------------

monit をインストール
-----------------------------------
yum install monit
-----------------------------------

設定ファイルをいじるので原本をコピー
-----------------------------------
cp -p /etc/monit.conf /etc/monit.conf_org
-----------------------------------
※centOS7.x系では設定ファイル名は monitrc

起動しているか(monitの状態確認)
-----------------------------------
monit summary
-----------------------------------

もしくは

-----------------------------------
monit status
-----------------------------------

結果:起動していない
-----------------------------------
Monit: the monit daemon is not running
-----------------------------------

monit を起動させる(centOS6.x系)
-----------------------------------
service monit start
-----------------------------------

monit を起動させる(centOS7.x系)
-----------------------------------
systemctl start monit
-----------------------------------

設定ファイルの編集
-----------------------------------
vi /etc/monit.conf
-----------------------------------

monit のログ(デフォルト)
-----------------------------------
cat /var/log/monit
-----------------------------------

monit.conf を見ると、include /etc/monit.d/ 以下のファイルがインクルードされているのが分かる
-----------------------------------
# Include all files from /etc/monit.d/
include /etc/monit.d/*
-----------------------------------

監視対象のデーモンは /etc/monit.d/ に個別にファイルを作ればいい。

crond の監視をする場合、下記の内容で crond.conf というファイル名にして /etc/monit.d の直下に置く
-----------------------------------
check process crond with pidfile /var/run/crond.pid
start program = "/etc/init.d/crond start"
stop program = "/etc/init.d/crond stop"
if 5 restarts within 5 cycles then unmonitor
-----------------------------------

mysqldはこれ
-----------------------------------
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/init.d/mysqld start"
stop program = "/etc/init.d/mysqld stop"
if 5 restarts within 5 cycles then unmonitor
-----------------------------------

httpd(apache)はこれ
-----------------------------------
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if 5 restarts within 5 cycles then unmonitor
-----------------------------------

メールの設定。monit.conf に書く
-----------------------------------
#yahooメールの送信サーバーを指定
set mailserver localhost

#アラートメールの内容
set mail-format {
from: monit@example.com
subject: $HOST : $SERVICE - $EVENT
message: Monit
ACTION : $ACTION
SERVICE : $SERVICE
at $DATE on $HOST.
DESCRIPTION : $DESCRIPTION
}

#送信先
set alert 自分のメール@yahoo.co.jp
-----------------------------------

個別設定ファイルを作ったらシンタックスのチェックも忘れずに
-----------------------------------
monit -t
-----------------------------------

シンタックスに問題なければ設定を反映
-----------------------------------
monit reload
-----------------------------------

サーバーが起動した際に monit も自動起動するか確認
-----------------------------------
# chkconfig --list monit
monit 0:off 1:off 2:off 3:off 4:off 5:off 6:off
-----------------------------------
run level 3 ~ 5 が on になっていれば自動起動する。↑これでは起動しない。

ちなみに mysqld の run level を確認すると 3~ 5 が on になっていた。
----------------------------------
#chkconfig --list mysqld
mysqld 0:off 1:off 2:off 3:on 4:on 5:on 6:off
---------------------------------

monit を自動起動に設定する
---------------------------------
chkconfig monit on
---------------------------------

スクリプトにより unmonitor になった場合に monitor に戻すとき
-----------------------------------
monit monitor all
-----------------------------------

一時的に unmonitor するとき
-----------------------------------
monit unmonitor crond

もしくは

monit unmonitor all
-----------------------------------

一度 unmonitor になると自動で戻らないので cron で定期的に戻す
-----------------------------------
#60分ごとに unmonit をリフレッシュ
*/60 * * * * /usr/bin/monit monitor all
-----------------------------------

マニュアルを開く
-----------------------------------
man monit
-----------------------------------

poderosaのssh2接続で使用していた秘密鍵をtermiusで使う

PoderosaをSSH2 形式で利用していて、PC に置いてある秘密鍵を iphone のターミナルでも再利用しようとコピペしたが使えない。

id_rsa というファイル名でこんな感じの内容だった
------------------------------------------------

---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Comment:
faejpg@gjewrewf:affewgwgrgfsdfdsfdsfsdffa
ejpg@gjewrewf:affewgwgrgfsdfdsfdsfsdffaej
pg@gjewrewf:affewgwgrgfsdfdsfdsfsdffaejpg
@gjewrewf:affewgwgrgfsdfdsfdsfsdffaejpg@g
jewrewf:affewgwgrgfsdfdsfdsfsdffaejpg@gjew
rewf:affewgwgrgfsdfdsfdsfsdf
---- END SSH2 ENCRYPTED PRIVATE KEY ----
------------------------------------------------

これはssh.com形式(SECSH)という形式の鍵で termius で使用するには OpenSSH形式への変換が必要らしい
認証鍵の形式についてはこちらを参考
「SSHの公開鍵ってなに?」の「認証鍵の形式」の章

ちなみにサーバーにアップロードされている公開キーは ssh-rsa~ から始まる一行の物でOpenSSH 形式だった。
------------------------------------------------
cat /home/ユーザー名/.ssh/authorized_keys
------------------------------------------------

ssh.com形式(SECSH)をOpenSSH形式へ鍵の形式変換

変換を試みる

ssh-keygen コマンドがあるか確認
------------------------------
which ssh-keygen
------------------------------

変換を実施
------------------------------
# ssh-keygen -i -f id_rsa > new_id_rsa
unsupported cipher 3des-cbc
decode blob failed.
------------------------------

失敗した。

別の方法で変換を試みる。

参考ページの方法で変換する↓
PoderosaのSSH2の秘密鍵をOpenSSHで使う

秘密鍵の変換は puttygen.exe を利用するとできるらしい。

1.ダウンロードしたputtygen.exe をダブルクリックで起動。
2. [Conversions]→[Import key] でPoderosaで作成した秘密鍵をインポート
3. [Conversions]→[Export OpenSSH key] で秘密鍵をエクスポート

出来上がった秘密鍵を iphone の termius に itunes のファイル共有から移動させて接続できた。

1 / 3312345...102030...最後 »