技術者になりたい何か

技術者になりたい何かの覚書的な何かです

Let's Encrypt でSSL(CentOS6 + Nginx)

今更な環境ですが、VPSのCentOS6とNginxで動いてるとあるサイトをLet's EncryptでSSL化してみました。

ssl.sakura.ad.jp

■対象の環境

# cat /etc/redhat-release
CentOS release 6.8 (Final)
# nginx -v
nginx version: nginx/1.10.1

■準備

epel リポジトリインストール(入ってた)

 

# yum install epel-release

 

Certbotwgetで取ってくる

# wget https://dl.eff.org/certbot-auto
--2020-08-12 09:32:48-- https://dl.eff.org/certbot-auto
dl.eff.org をDNSに問いあわせています... 2a04:4e42:36::201, 151.101.108.20#
dl.eff.org|2a04:4e42:36::201|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 O#
長さ: 79656 (78K) [application/octet-stream]
`certbot-auto' に保存中

100%[============================================================================================================>] 79,656 --.-K/s 時間 0.006s

2020-08-12 09:32:48 (11.8 MB/s) - `certbot-auto' へ保存完了 [79656/79656]

 ■certbot 実行でSSL証明書インストール&Nginxの設定

## アクセス権追加→実行

# chmod a+x certbot-auto
#
# ./certbot-auto

## 最初は必要パッケージをインストール

 

 Requesting to rerun ./certbot-auto with root privileges...
Bootstrapping dependencies for Legacy RedHat-based OSes that will use Python3... (you can skip this with --no-bootstrap)
yum is hashed (/usr/bin/yum)
To use Certbot on this operating system, packages from the SCL repository need to be installed.
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: nrt.edge.kernel.org
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
パッケージ は利用できません。
パッケージ は利用できません。
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package centos-release-scl.noarch 10:7-4.el6.centos will be インストール
--> 依存性の処理をしています: centos-release-scl-rh のパッケージ: 10:centos-release-scl-7-4.el6.centos.noarch
--> トランザクションの確認を実行しています。
---> Package centos-release-scl-rh.noarch 0:2-4.el6.centos will be インストール
--> 依存性解決を終了しました。

(中略)

インストール:
libffi-devel.x86_64 0:3.0.5-3.2.el6 mod_ssl.x86_64 1:2.2.15-69.el6.centos rh-python36-python.x86_64 0:3.6.9-2.el6
rh-python36-python-devel.x86_64 0:3.6.9-2.el6 rh-python36-python-virtualenv.noarch 0:15.1.0-2.el6

依存性関連をインストールしました:
iso-codes.noarch 0:3.16-2.el6 rh-python36-python-libs.x86_64 0:3.6.9-2.el6 rh-python36-python-pip.noarch 0:9.0.1-2.el6
rh-python36-python-setuptools.noarch 0:36.5.0-1.el6 rh-python36-runtime.x86_64 0:2.0-1.el6 scl-utils-build.x86_64 0:20120927-29.el6_9
xml-common.noarch 0:0.6.3-33.el6

更新:
ca-certificates.noarch 0:2019.2.32-65.1.el6_10

依存性を更新しました:
httpd.x86_64 0:2.2.15-69.el6.centos httpd-tools.x86_64 0:2.2.15-69.el6.centos

完了しました!

Creating virtual environment...
Installing Python packages...
Installation succeeded.
Saving debug log to /var/log/letsencrypt/letsencrypt.log

 

## Apache or Nginx 選択
How would you like to authenticate and install certificates?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Apache Web Server plugin (apache)
2: Nginx Web Server plugin (nginx)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Plugins selected: Authenticator nginx, Installer nginx

## メールアドレス

Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): hogehoge@gmail.com

## 利用規約同意

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: a

## 登録したアドレスにニュースとか送るよ?的な

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization tha#
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

## ドメインリスト。どれに適用するか選択。

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: AAAAA.com
2: BBBBB.com
3: CCCCC.com
4: DDDDD.com
5: EEEEE.com
6: FFFFF.com
7: GGGGG.com
8: HHHHH.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 7
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for obata-tatami.co#
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/XXXXXX
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/XXXXXXX

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://XXXXX.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subscribe to the EFF mailing list (email: hogehoge@gmail.com).

 

 ## Congratulations!がでればおk

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/XXXXXX.com/fullchain.pe#
Your key file has been saved at:
/etc/letsencrypt/live/XXXXXX.com/privkey.pe#
Your cert will expire on 2020-11-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again with the "certonly" option. To non-interactively renew *all*
of your certificates, run "certbot-auto renew"
- Your account credentials have been saved in your Certbo#
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

 

■作られたファイル確認


## /etc/letsencrypt

# ls -lR /etc/letsencrypt/
/etc/letsencrypt/:
合計 40
drwx------ 3 root root 4096 8月 12 09:34 2020 accounts
drwx------ 3 root root 4096 8月 12 09:35 2020 archive
drwxr-xr-x 2 root root 4096 8月 12 09:35 2020 csr
drwx------ 2 root root 4096 8月 12 09:35 2020 keys
drwx------ 3 root root 4096 8月 12 09:35 2020 live
-rw-r--r-- 1 root root 924 8月 12 09:34 2020 options-ssl-apache.conf
-rw-r--r-- 1 root root 688 8月 12 09:34 2020 options-ssl-nginx.conf
drwxr-xr-x 2 root root 4096 8月 12 09:35 2020 renewal
drwxr-xr-x 5 root root 4096 8月 12 09:34 2020 renewal-hooks
-rw-r--r-- 1 root root 424 8月 12 09:34 2020 ssl-dhparams.pem

/etc/letsencrypt/accounts:
合計 4
drwx------ 3 root root 4096 8月 12 09:34 2020 acme-v02.api.letsencrypt.org

/etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org:
合計 4
drwx------ 3 root root 4096 8月 12 09:35 2020 directory

/etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory:
合計 4
drwx------ 2 root root 4096 8月 12 09:35 2020 6fd0c2802a41ad01d7f61cbaa6062af0

/etc/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory/6fd0c2802a41ad01d7f61cbaa6062af0:
合計 12
-rw-r--r-- 1 root root 89 8月 12 09:35 2020 meta.json
-r-------- 1 root root 1632 8月 12 09:35 2020 private_key.json
-rw-r--r-- 1 root root 78 8月 12 09:35 2020 regr.json

/etc/letsencrypt/archive:
合計 4
drwxr-xr-x 2 root root 4096 8月 12 09:35 2020 XXXXXX.com

/etc/letsencrypt/archive/XXXXXX.com:
合計 16
-rw-r--r-- 1 root root 1915 8月 12 09:35 2020 cert1.pem
-rw-r--r-- 1 root root 1647 8月 12 09:35 2020 chain1.pem
-rw-r--r-- 1 root root 3562 8月 12 09:35 2020 fullchain1.pem
-rw------- 1 root root 1704 8月 12 09:35 2020 privkey1.pem

/etc/letsencrypt/csr:
合計 4
-rw-r--r-- 1 root root 928 8月 12 09:35 2020 0000_csr-certbot.pem

/etc/letsencrypt/keys:
合計 4
-rw------- 1 root root 1704 8月 12 09:35 2020 0000_key-certbot.pem

/etc/letsencrypt/live:
合計 8
-rw-r--r-- 1 root root 740 8月 12 09:35 2020 README
drwxr-xr-x 2 root root 4096 8月 12 09:35 2020 XXXXXX.com

/etc/letsencrypt/live/XXXXXX.com:
合計 4
-rw-r--r-- 1 root root 692 8月 12 09:35 2020 README
lrwxrwxrwx 1 root root 40 8月 12 09:35 2020 cert.pem -> ../../archive/XXXXXX.com/cert1.pem
lrwxrwxrwx 1 root root 41 8月 12 09:35 2020 chain.pem -> ../../archive/XXXXXX.com/chain1.pem
lrwxrwxrwx 1 root root 45 8月 12 09:35 2020 fullchain.pem -> ../../archive/XXXXXX.com/fullchain1.pem
lrwxrwxrwx 1 root root 43 8月 12 09:35 2020 privkey.pem -> ../../archive/XXXXXX.com/privkey1.pem

/etc/letsencrypt/renewal:
合計 4
-rw-r--r-- 1 root root 536 8月 12 09:35 2020 XXXXXX.com.conf

/etc/letsencrypt/renewal-hooks:
合計 12
drwxr-xr-x 2 root root 4096 8月 12 09:34 2020 deploy
drwxr-xr-x 2 root root 4096 8月 12 09:34 2020 post
drwxr-xr-x 2 root root 4096 8月 12 09:34 2020 pre

/etc/letsencrypt/renewal-hooks/deploy:
合計 0

/etc/letsencrypt/renewal-hooks/post:
合計 0

/etc/letsencrypt/renewal-hooks/pre:
合計 0

 ## Nginxの設定ファイル

# managed by Certbotってコメントされているのが自動で追記されたところ

server {
server_name XXXXXX.com;

access_log /var/log/nginx/XXXXXX.com/access.log;
error_log /var/log/nginx/XXXXXX.com/error.log;

root /var/www/XXXXXX.com;
index index.php index.html index.htm;

error_page 404 = /error/404.php;
error_page 403 = /error/403.php;
error_page 500 = /error/500.php;
error_page 503 = /error/503.html;

location ~\.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/XXXXXX.com$fastcgi_script_name;
include fastcgi_params;
}

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/XXXXXX.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/XXXXXX.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
if ($host = XXXXXX.com) {
return 301 https://$host$request_uri;
} # managed by Certbot


listen 80;
server_name XXXXXX.com obata-tatami.production.piyoria.com;
return 404; # managed by Certbot


}

 

■Nginx reload

# service nginx reload
Reloading nginx: [ OK ]

 OKが出たら実際にhttpsで対象のサイトにアクセスして動作確認。

 

■自動更新

Let's Encryptの証明書は90日で有効期限が来てしまうので、更新忘れ防止のためにも自動更新しておいたほうが吉。

## 動作確認

dry-runをつけることでテスト動作

# ./certbot-auto certonly --webroot -w /var/www/XXXXXX.com/ -d XXXXXX.com --dry-

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Cert not due for renewal, but simulating renewal for dry run
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for XXXXXX.com
Using the webroot path /var/www/XXXXXX.com for all unmatched domains.
Waiting for verification...
Cleaning up challenges
Running post-hook command: /sbin/service nginx reload
Output from post-hook command service:
Reloading nginx: [ OK ]


IMPORTANT NOTES:
- The dry run was successful.

 The dry run was successful.がでたらOKなので、cronで月イチで動かす。

# crontab -l
no crontab for root
#
# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
#
# crontab -l
30 5 1 * * /home/tmin/certbot-auto certonly --webroot -w /var/www/XXXXXX.com/ -d XXXXXX.com --force-renew --post-hook "/sbin/service nginx reload"

 

上の場合は毎月1日の5:30に更新かけて、Nginx のreloadを実行する。

Special Thanks

qiita.com

ip link set [DEV] up/down とifup/downの挙動の違い

RHEL7系でNetworkManagerを無効にしてある環境下で特定のネットワークインターフェイスのダウン・アップをするときに
ip link set [DEV] down → ip link set [DEV] up するとデフォルトゲートウェイが消える。
ifdown [DEV] → ifup [DEV] だと大丈夫。

■結論

ipコマンドでやってるのは単純にインターフェイスのダウン・アップのみであり、アップ時に設定ファイル(/etc/sysconfig/network-script/配下のifcfg-e* は読み込んでない。
設定ファイル読み込ませてダウン・アップするにはnmcli使わなきゃいけない。
nmcliコマンドはNetworkManagerのコマンドなので、無効にしてあると使えない。
NetworkManager無効にしてある環境ではifdown → ifup すれば設定ファイル読み込んで起動してくれる。

■とある環境で

NetworkManager無効、/etc/sysconfig/network-script/ifcfg-ethX の設定ファイル直接書き換えでネットワーク設定済み。
ifup,ifdownはnet-tools系と同じく古くて非推奨になったものだと思い込み、今までifdown,ifupでやってた手順をip link set [ethX] down|up してみたところ、
デフォルトゲートウェイの設定が消失。

いろいろ調べてみると、どうもipコマンドでのリンクUPは単にネットワークのリンクをダウン/アップさせるだけで、設定ファイルは読み込まない模様。

serverfault.com


>>ifup is a command that reads the /etc/network/interfaces (or other files depending on distro) brings the link up and correctly configures the interfaces as specified.
>>Running ip link only changes or shows the link status. It does not read the configuration file, it does not make any other changes.

unix.stackexchange.com

確かにmanコマンド叩いても、ipコマンドのとこには設定ファイルどうこうの記述はないっぽい。

$ man ip
~~途中省略~~
       ip link set x up
           Bring up interface x.

       ip link set x down
           Bring down interface x.
~~以下省略~~

ifupの方は設定ファイル使うよ、っていう記述あり。

$ man ifup
~~途中省略~~

       The ifup and ifdown commands may be used to configure (or, respec- tively, deconfigure) network interfaces based on interface definitions in
       the files /etc/sysconfig/network and /etc/sysconfig/network-scripts/ifcfg-<configuration>
~~以下省略~~

■どうしてこうなった

以下多分。
ipコマンドはそもそも最近ちゃんとメンテされてないnet-toolsの中のifconfigコマンドを置き換える形で入ったものだった。
ifconfigによるUP/DOWNとifup/downの違いは下記。

>>ifconfig <デバイス名> down
>>単にネットワークのリンクをダウンさせます。よってipアドレスが設定されていた場合、ipアドレスは保持されます。


>>ifdown <デバイス名>
>>以下のファイルに従い処理が実行されます。
>>/etc/sysconfig/network-scripts/ifdown

tooljp.com

なのでipコマンドは単純にネットワークのリンクをダウン/アップさせるだけのもの、なのかな?

■そうしてどうなった

RHEL7系の場合、nmcliを使用してダウン/アップさせれば設定ファイルを読み込んでUPしてくれる模様。

milestone-of-se.nesuke.com

nmcliコマンドを使用するにはNetworkManager必須。NetworkManager管理下のインターフェイスに対してしか使えない模様。

本来はRHEL7系ではNetworkManagerを有効にして使われることが想定されているので、
ip コマンドでは一時的な設定、nmcliでは恒久的な設定(設定ファイルを書き換える)という使い分けをするのが推奨の手順のようです。

■そうはいっても

6系まではnet-toolsと設定ファイル直接編集がメジャーな設定だったわけで、NetworkManagerは設定ファイル勝手に書き換えたり、設定ファイル無視して立ち上がることがあったりとビミョーな挙動をとることも少なくなく、そのため嫌われ者だったりもしますね。
今更NetworkManager有効にしてこれを中心の運用にするのはそれはそれで慣れないやり方をみんなが取ることになって、別の意味で危なかったりする気がします。

簡単に移行できる方々は移行したらいいと思うし、抵抗がある方々は併用すればいいんじゃないでしょうか。

■ちなみに

/etc/sysconfig/network-scripts/配下にifup,ifdownのスクリプトがおいてあって、それぞれ/usr/sbin/配下の同コマンドへのシンボリックリンクになっています。

$ ls -l /etc/sysconfig/network-scripts/ifup
lrwxrwxrwx. 1 root root 22 Feb 22 13:49 /etc/sysconfig/network-scripts/ifup -> ../../../usr/sbin/ifup
$ ls -l /etc/sysconfig/network-scripts/ifdown
lrwxrwxrwx. 1 root root 24 Feb 22 13:49 /etc/sysconfig/network-scripts/ifdown -> ../../../usr/sbin/ifdown

これらはただのスクリプトなので、catで見ることができます。

ファイルの同一性を確認するためのハッシュ値計算あれこれ

そのファイルほんとに同一ですか?ってときに使うハッシュ値による確認方法まとめ

■どんなときに使う?

インストールメディアとか、パッチとかが正しいものかの確認したいとき
でかいファイルの転送テストとかのときに、中断して再開して転送完了したけど、そのファイル壊れてないか確認したいとき

■種類

cksum CRC 基本32bit?
md5sum md5 128bit
sha1sum SHA1 160bit
sha256sum SHA256 256bit

他にも下記があって、それぞれ数字がbit長
sha224sum
sha256sum
sha384sum
sha512sum

当然ハッシュ値が長いほうが信頼性が高いです。
出力結果のハッシュ値が同一ならば、そのファイルは同一ですが、各アルゴリズムによって信頼性は変わります。
※短ければ短いほど衝突の可能性が高くなる
ので、確認したい対象と求められる正確性に応じて適宜適当なものを選ぶのが良い気がします。
※大量のファイルをチェックするなら衝突の可能性が一番高いcksumはやめたほうがいいけど、数個のファイルの同一性を確認したいときにそんなに衝突するかという話。

■実行結果と時間

対象をCentOSのインストール用ISO(DVD版)として、各コマンドでハッシュ値を計算してみます。
ついでにtimeコマンドで時間も測ってみます。

実行環境はメイン機のArch。

$ cat /proc/cpuinfo | grep 'model name'
model name	: AMD Ryzen 5 1500X Quad-Core Processor
model name	: AMD Ryzen 5 1500X Quad-Core Processor
model name	: AMD Ryzen 5 1500X Quad-Core Processor
model name	: AMD Ryzen 5 1500X Quad-Core Processor
model name	: AMD Ryzen 5 1500X Quad-Core Processor
model name	: AMD Ryzen 5 1500X Quad-Core Processor
model name	: AMD Ryzen 5 1500X Quad-Core Processor
model name	: AMD Ryzen 5 1500X Quad-Core Processor

実行結果

$ time cksum CentOS-7-x86_64-DVD-1810.iso 
2792377078 4588568576 CentOS-7-x86_64-DVD-1810.iso

real	0m47.911s
user	0m15.538s
sys	0m1.453s
$ time md5sum CentOS-7-x86_64-DVD-1810.iso 
5b61d5b378502e9cba8ba26b6696c92a  CentOS-7-x86_64-DVD-1810.iso

real	0m47.165s
user	0m8.858s
sys	0m1.454s
$ 
$ time sha1sum CentOS-7-x86_64-DVD-1810.iso 
7ac72a080ce8ca79d39804f713684119b908941a  CentOS-7-x86_64-DVD-1810.iso

real	0m46.512s
user	0m3.903s
sys	0m1.766s
$ 
$ time sha256sum CentOS-7-x86_64-DVD-1810.iso 
6d44331cc4f6c506c7bbe9feb8468fad6c51a88ca1393ca6b8b486ea04bec3c1  CentOS-7-x86_64-DVD-1810.iso

real	0m48.070s
user	0m4.953s
sys	0m1.993s
$ 
$ 
$ time sha512sum CentOS-7-x86_64-DVD-1810.iso 
332cfc3593b091ac0e157a800fb1c1599f9f72e69441e46b50ed84f5ab053b7681ebf4ed660a6a8bfccbf8e3ae9266e3c6016f08439fc36e157ef7aa8be7b14a  CentOS-7-x86_64-DVD-1810.iso

real	0m53.131s
user	0m9.130s
sys	0m1.366s
$ 

意外と時間は変わりませんでした。
realが結構かかってるのは他のいろいろ作業しながらかもしれないけども。

スペックがアレなサーバ機でやってみます。

$ cat /proc/cpuinfo | grep 'model name'
model name	: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+
model name	: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+
$ 
$ time cksum CentOS-7-x86_64-DVD-1810.iso 
2792377078 4588568576 CentOS-7-x86_64-DVD-1810.iso

real	0m31.085s
user	0m19.724s
sys	0m3.812s
$ 
$ time md5sum CentOS-7-x86_64-DVD-1810.iso 
5b61d5b378502e9cba8ba26b6696c92a  CentOS-7-x86_64-DVD-1810.iso

real	0m30.702s
user	0m13.716s
sys	0m4.680s
$ 
$ time sha1sum CentOS-7-x86_64-DVD-1810.iso 
7ac72a080ce8ca79d39804f713684119b908941a  CentOS-7-x86_64-DVD-1810.iso

real	0m30.768s
user	0m19.320s
sys	0m4.420s
$ 
$ time sha256sum CentOS-7-x86_64-DVD-1810.iso 
6d44331cc4f6c506c7bbe9feb8468fad6c51a88ca1393ca6b8b486ea04bec3c1  CentOS-7-x86_64-DVD-1810.iso

real	0m40.900s
user	0m36.628s
sys	0m3.452s
$ 
$ time sha512sum CentOS-7-x86_64-DVD-1810.iso 
332cfc3593b091ac0e157a800fb1c1599f9f72e69441e46b50ed84f5ab053b7681ebf4ed660a6a8bfccbf8e3ae9266e3c6016f08439fc36e157ef7aa8be7b14a  CentOS-7-x86_64-DVD-1810.iso

real	0m30.863s
user	0m24.856s
sys	0m3.876s
$ 

これまた意外と時間変わりませんね。256より512が短くなってるのは何かのタイミングの問題でしょう。たぶん。

■ちなみに1

Linux系のインストールイメージとかは検証用に各DLページあたりにハッシュ値が書いてあることが多いです。
指定されたアルゴリズムでDL後のISOファイルを検証してね。
https://www.debian.org/CD/verify
https://wiki.centos.org/Manuals/ReleaseNotes/CentOS7.1810?action=show&redirect=Manuals%2FReleaseNotes%2FCentOS7

■ちなみに2

opensslでも同じことができます。

$ openssl md5 CentOS-7-x86_64-DVD-1810.iso 
MD5(CentOS-7-x86_64-DVD-1810.iso)= 5b61d5b378502e9cba8ba26b6696c92a
$ 

使えるのは下記

$ openssl list -digest-commands
blake2b512        blake2s256        gost              md4               
md5               mdc2              rmd160            sha1              
sha224            sha256            sha3-224          sha3-256          
sha3-384          sha3-512          sha384            sha512            
sha512-224        sha512-256        shake128          shake256          
sm3               

$ 

実際のところ、簡単なファイル同一性確認ならcksumかmd5sum使うことが多いし、メディアやパッチの同一性確認ならDLページの指定形式使いますね。
ファイルの同一性の確認というだけならそんなにこだわらなくてもよいかと思います。

Sponsored Link