Ubuntsuで起動時に選択されるOSを設定する

ターミナルでコマンドを実行

sudo grep menuentry /boot/grub/grub.cfg

インストールされているOSが表示されるので、既定で選択したいOSの menuentry_id_option をメモします。

メモした menuentry_id_option の値を /etc/default/grub の GRUB_DEFAULT に設定します。

sudo vi /etc/default/grub

GRUB_DEFAULT="osprober*************"

update-grub コマンドで設定を更新します。

sudo update-grub

補足:起動時のOSの番号で指定することもできます。
   1番目が0なので、3番目のOSを選択する場合は GRUB_DEFAULT=2 とします。

指定した拡張子のファイルだけ同期する

指定した拡張子のファイルだけ同期する

rsync -av  --include="*/" --include="*.gif" --include="*.jpg" --exclude="*" src/ dst/
  • 先に–includeで対象を指定し、最後に–excludeでそれ以外を除外する。この順番を守る。
  • –include=”*/”によってサブディレクトリを対象にする。
    • この指定がないと、–include=”*.gif”を指定してもサブディレクトリ下のGIFファイルは対象にならない。

自己認証局でSSLクライアント認証

忘備録

CA

/etc/pki/tls/openssl.cnfがデフォルトで使われる設定ファイルで、これをCA用に修正します。

[ CA_default ]
dir              = /etc/pki/CA  # <= 相対パスになってたら、絶対パスに直した方が良い
x509_extensions  = v3_ca        # <= v3_caを見るようにする
default_days     = 365          # <= サーバ/クライアントの認証期間
default_crl_days = 3650         # <= CA自体の認証期間はこっち

[ req_distinguished_name ]
countryName_default            = JP
stateOrProvinceName_default    = Kanagawa
localityName_default           = Yokohama
0.organizationName_default     = yourcompany       # <= 何でも良い
organizationalUnitName_default = CA                # <= 何でも良いけどサーバ/クライアントと違う値にすること
commonName_default             = your.domain       # <= CA用の時は何でも良いと思われる
emailAddress_default           = mail@your.domain

[ v3_ca ]
keyUsage   = cRLSign, keyCertSign   # <= CAの場合はこれっぽい
nsCertType = sslCA, emailCA, objCA  # <= CAとして動作させる値を指定

サーバ向け

修正した/etc/pki/tls/openssl.cnfを/etc/pki/Server配下にコピーして、
以下の項目を追加/修正します。

[ CA_default ]
x509_extensions  = usr_cert  # <= CA用じゃないのでusr_certを指定

[ req ]
#x509_extensions = v3_ca   # <= コメントアウト
req_extensions   = v3_req  # <= v3_reqを見るようにする

[ req_distinguished_name ]
organizationalUnitName_default = WWW               # <= 何でも良いけどCAと違う値にすること
commonName_default             = *.your.domain     # <= サーバ名と一致させる必要あり。*で曖昧指定できる
emailAddress_default           = mail@your.domain  # <= 何でもよさげ

[ usr_cert ]
keyUsage   = nonRepudiation, digitalSignature, keyEncipherment  # <= CAじゃない場合はこれっぽい
nsCertType = server                                             # <= serverを指定

クライアント向け

作成した/etc/pki/Server/openssl.cnfを/etc/pki/Client配下にコピーして、
以下の項目を修正します。

[ req_distinguished_name ]
organizationalUnitName_default = DEV     # <= 何でも良いけど違う値にすること
commonName_default             = client  # <= 何でもよさげ
emailAddress_default           =         # <= 何でもよさげ

[ usr_cert ]
nsCertType = client, email, objsign  # <= クライアント用途を指定

CAの各ファイルを作成

$ /etc/pki/tls/misc/CA -newca
$ echo "00" > /etc/pki/CA/crlnumber
$ cd /etc/pki/CA
$ openssl x509 -inform pem -in cacert.pem -outform der -out cacert.der

challengePasswordは、設定するとエラーになるWebブラウザがあった記憶があるので、
空にしておくのが無難だと思います。
crlnumberは、期限切れの証明書などを失効させるのに必要なのですが、
最初は自分で作らなければならないみたいです。
cacert.derは、WebブラウザにCAを登録するためのファイルです。

サーバの秘密鍵を作成

$ cd /etc/pki/Server
$ openssl genrsa -config openssl.cnf -out key.pem -aes256 2048

上記の秘密鍵ファイルの場合、Apacheなどでは起動時にパスワード入力が必要になります。
それを避けたい場合は、さらに以下のコマンドを実行し、生成されたファイルを使います。

$ openssl rsa -in key.pem -out key2.pem

また、MySQLサーバの場合は、こちらのファイルでないとダメでした。

クライアントの秘密鍵を作成

$ cd /etc/pki/Client
$ openssl genrsa -config openssl.cnf -out key.pem -aes256 2048

秘密鍵ファイルのアクセス権を変更

$ chmod 400 /etc/pki/CA/private/cakey.pem
$ chmod 400 /etc/pki/Server/key.pem
$ chmod 400 /etc/pki/Client/key.pem

サーバの証明書を作成(毎年)

$ cd /etc/pki/Server
$ openssl req -new -config openssl.cnf -key key.pem -out csr.pem
$ openssl ca -config openssl.cnf -in csr.pem -out cert.pem

クライアントの証明書を作成(毎年)

$ cd /etc/pki/Client
$ openssl req -new -config openssl.cnf -key key.pem -out csr.pem
$ openssl ca -config openssl.cnf -in csr.pem -out cert.pem
$ openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.p12

p12形式のファイルが、クライアント証明書としてWebブラウザなどに取り込むファイルです。
ExportPasswordは、設定するとエラーになるWebブラウザがあった記憶があるので、
空にしておくのが無難だと思います。
その場合、Webブラウザなどでパスワードを聞かれたら、空でOKします。

また、以下のようにp12形式のファイルから、証明書と秘密鍵を取り出すこともできます。

$ openssl pkcs12 -in cert.p12 -nocerts -out key.pem -nodes
$ openssl pkcs12 -in cert.p12 -clcerts -nokeys -out cert.pem

例えば、Gitでクライアント認証する場合は、
p12形式ではなく証明書と秘密鍵を個別に指定する必要がありますが、
そういった場合でも、クライアント端末にはcert.p12だけ配布しておけば、
必要な時に上記コマンドによって証明書と秘密鍵を取り出して使うことができます。

期限切れの証明書を失効(毎年)

$ openssl ca -gencrl -revoke /etc/pki/CA/newcerts/?.pem -out /etc/pki/CA/crl.pem

/etc/pki/CA/newcerts配下の証明書の内容をcatなどで確認して、
目的の証明書を指定します。
-outが失効情報のファイルで、例えば、ApacheのSSLCARevocationFileに指定するファイルです。
このファイルが無かったり、空だったりすると、Apacheでエラーになった記憶があるので、
最初の構築時は、証明書を余分に作って失効させておいた方が良いと思います。
/etc/pki/CA配下のcrlnumberやindex.txtを確認すると、失効状況がわかるかと思います。

 

引用:http://aki2o.hatenablog.jp/entry/2015/01/12/223011

SSLクライアント認証が必要なGitリポジトリをクローンする

忘備録

$ mkdir hoge
$ cd hoge
$ git init
$ git config --local http.sslCert /path/to/client.cert
$ git config --local http.sslKey /path/to/client.key
$ git config --local http.sslCaInfo /path/to/ca.cert
$ git config --local http.sslVerify false
$ git remote add origin https://your.domain/git/hoge.git
$ git pull origin master

http.sslCertは、「クライアントの証明書を作成(毎年)」のcert.pem
http.sslKeyは、「クライアントの証明書を作成(毎年)」のkey.pem
http.sslCaInfoは、「CAの各ファイルを作成」のcacert.der

引用:http://aki2o.hatenablog.jp/entry/2015/01/15/053351

sudo Setting

1.「sudo」を利用したい一般ユーザを「wheel」グループに所属させます。
# usermod -G wheel ***
※***は、「sudo」を設定したいユーザ名です。

2.「wheel」グループに所属するユーザが「sudo」を利用できるように設定を変更します。
# visudo
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL

 ↓↓↓
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL

左腿の神経痛。

少し前までは、右腿の痛みがあった。

やっと治ったと思ったら、今度は左。

ストレスなのか、寝不足なのか。

WordPressで外部サイトのタグ内のテキストを取得する

function.php
以下は<main>タグ内のテキストを取得する。

function includeFile($atts) {
	if (isset($atts['url'])) {
	    $url = $atts['url'];

	    $html = file_get_contents($url);
		if (preg_match("/<main[^>]*>(.*?)<\/main>/is", $html, $body)) {
			return $body[1];
		} else {
			return "(準備中)";
		}
	}
}
add_shortcode('include', 'includeFile');

page

[include url='http://nyanko.jp/home/?p=334']