作成したRSA秘密鍵からCSRをつくる

CSRとは「Ceertificate Signing Request」の略でSSLサーバ証明書発行に必要なテキストデータ
公開鍵やコモンネーム(FQDN)、組織名、部署名等が含まれている。
認証局は、CSRと申し込み情報を元に内容を精査してSSLサーバ証明書を発行する

→つまり、認証局がSSL証明書発行に必要なファイルという意味ですね。

openssl req は証明要求(csr)の作成
-new 新規作成
-out 出力する要求ファイル名
-key filename 入力する秘密鍵のファイル名

作成したRSA秘密鍵からCSRをつくります
openssl req -new -key ca.key -out ca.csr
色々聞かれます。
Country Name
state or province name
locality name
organization name
organizational unit name
common name
email address

[vagrant@localhost ssl]$ openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ja
State or Province Name (full name) [Some-State]:tokyo
Locality Name (eg, city) []:shibuya
Organization Name (eg, company) [Internet Widgits Pty Ltd]:hpscript
Organizational Unit Name (eg, section) []:developement
Common Name (e.g. server FQDN or YOUR name) []:hpscript
Email Address []:info@hpscript.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:hpscript
An optional company name []:hpscript

RSA秘密鍵を元に、CSRが作られます。

[vagrant@localhost ssl]$ ls
ca.csr  ca.key

作成されたCSR

-----BEGIN CERTIFICATE REQUEST-----
MIIDBjCCAe4CAQAwgY4xCzAJBgNVBAYTAmphMQ4wDAYDVQQIDAV0b2t5bzEQMA4G
A1UEBwwHc2hpYnV5YTERMA8GA1UECgwIaHBzY3JpcHQxFTATBgNVBAsMDGRldmVs
b3BlbWVudDERMA8GA1UEAwwIaHBzY3JpcHQxIDAeBgkqhkiG9w0BCQEWEWluZm9A
aHBzY3JpcHQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmJ4B
3ZcX+fD+dDWaE+76QxYd8Z9ooLwGWneFfpZyOYBDP291rMMzVrSA/tAH0HfXFBKu
P8rmtEB23YEzcy4OKOrTXIZqoKfGO6tTgDQYFSTvGJoNWSpf3CZqqVy6nTyeOOUf
MiN6SdWgZV6ZNYx3OPpCacPCVpaYgmLAVL7MmQr+nTGsfFzB8G3acReKaEa1LFDU
bMf1TYj+pK6cNy5KDU3jKLbfWHf6o+n7rFi4ZhLw6DCDHEJpy2CLxO/RdjpC7Vil
hogehoge
-----END CERTIFICATE REQUEST-----

ほう、csrもハッシュ化されるのか^^

opensslでRSA秘密鍵の作成方法

openssl genrsa -out ca.key 2048で作成する
genrsaのオプションを確認しておこう。-out fileでファイルを作成する。2048は2048bitという意味。

usage: genrsa [args] [numbits]
-des encrypt the generated key with DES in cbc mode
-des3 encrypt the generated key with DES in ede cbc mode (168 bit key)
-idea encrypt the generated key with IDEA in cbc mode
-seed
encrypt PEM output with cbc seed
-aes128, -aes192, -aes256
encrypt PEM output with cbc aes
-camellia128, -camellia192, -camellia256
encrypt PEM output with cbc camellia
-out file output the key to ‘file
-passout arg output file pass phrase source
-f4 use F4 (0x10001) for the E value
-3 use 3 for the E value
-engine e use engine e, possibly a hardware device.
-rand file:file:…
load the file (or the files in the directory) into
the random number generator

openssl genrsa -out ca.key 2048と打ち込みます。

[vagrant@localhost ssl]$ openssl genrsa -out ca.key 2048
Generating RSA private key, 2048 bit long modulus
..............+++
.....+++
e is 65537 (0x10001)

ca.keyができるのがわかります。

[vagrant@localhost ssl]$ ls
ca.key

ca.keyの中身を見てみます。

-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAmJ4B3ZcX+fD+dDWaE+76QxYd8Z9ooLwGWneFfpZyOYBDP291
rMMzVrSA/tAH0HfXFBKuP8rmtEB23YEzcy4OKOrTXIZqoKfGO6tTgDQYFSTvGJoN
WSpf3CZqqVy6nTyeOOUfMiN6SdWgZV6ZNYx3OPpCacPCVpaYgmLAVL7MmQr+nTGs
fFzB8G3acReKaEa1LFDUbMf1TYj+pK6cNy5KDU3jKLbfWHf6o+n7rFi4ZhLw6DCD
HEJpy2CLxO/RdjpC7Vil+eJl99AdIbGOOdRwAnJZ5TfNzINXKg91jWYByaIc0kqS
Vj4snaHADrJkEiKF//B17qsbPXFwG2WbcA+A2wIDAQABAoIBAChWixOwneu4IOlC
Sak/HvKgY+W7RoJFcEB1GtmsliBQoHWh1i6FoYonR3kSLx6Qrk5l6Zx+2p+F8mT1
g03MPH3gI2FvPbuc3K5kyDs4iaz9CB0uipyosJGVrdd55PEuVnufQ7GS4v2k8zIX
4NLgf5qVuvwNe847G7BKvZ8olxdUAh5HEbi8OigI3jHJk/uEXrp48aLF9uU/u6l9
AOwOo44bh0adt1Iu+7HAxS/huFXxwlLqxkCW3iYrAG6A9EgScGdljg7L812meRNJ
Am6/1euX8Zq/rWPkiXds2yTiY5RmI/1TeaHhhLqOMqkGbpxYPCial6uFYfiCgF/Q
uH2tfvECgYEAxzD7M/JMNDQC2Ak9jEMKABFlC60p4BhdFi0KRMZbBfNrBnR/f4zg
+t5dtVzFJX0k5fPD5Dx5KV1LGsmbQNzvfBtvNcraXjICGWEUwaTVV16WkHJt30c8
FeN27pTFXS30qAgPDPn818nQvdesVjEghL1Z/B6jmodtKsGcUkDYPC8CgYEAxCSi
hoehoge
-----END RSA PRIVATE KEY-----

できてます。

オレオレ証明書の作成

認証機関ではない身元が不確かな機関が発行した証明書
オレオレ証明書というのだから、自分で発行した証明書ということだろう

mod_ssl
Apache Module mod_ssl
This module provides SSL v3 and TLS v1.x support for the Apache HTTP Server.
TLSの最新はv1.3だから対応してそう

[vagrant@localhost ~]$ httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Jun 19 2018 15:45:13
[vagrant@localhost ~]$ rpm -aq | grep mod_ssl

sudo yum isntall mod_ssl openssl
mod_sslとopensslをインストールする

[vagrant@localhost /]$ sudo yum install mod_ssl openssl
[vagrant@localhost /]$ openssl version
OpenSSL 1.0.2n  7 Dec 2017

入りました^^

list-standard-commands
[vagrant@localhost /]$ openssl list-standard-commands
asn1parse
ca
ciphers
cms
crl
crl2pkcs7
dgst
dh
dhparam
dsa
dsaparam
ec
ecparam
enc
engine
errstr
gendh
gendsa
genpkey
genrsa
nseq
ocsp
passwd
pkcs12
pkcs7
pkcs8
pkey
pkeyparam
pkeyutl
prime
rand
req
rsa
rsautl
s_client
s_server
s_time
sess_id
smime
speed
spkac
srp
ts
verify
version
x509

genrsaがありますね。
CAとはCertificate Authority(認証局)
open genrsa -out ca.key 2048
-> 2048bitのに認証局キーを生成する

SocketException: Connection reset

JavaとサーバサイドのSSL/TLSの使用プロトコルの差異

TLSとはなにか?
SSLはSecurity Sockets Layerで安全に通信するためのセキュリティプロトコル。
TLSはSSLの次世代規格。SSLと呼んでいるものは、実際TLSを指している場合もある
TLSはTransport Layer Securityの略

TLSが提供するチャネルでは
– 通信データ暗号化することで盗聴しても内容が分からないようにする
– 通信データが伝送される途中で改ざんされた時にそれを検出する
– 通信相手が正しいとこいうことを確認できる

最新バージョンはTLS1.3

Connection reset by peers

Connection reset by peers って何?
Oracleのページを覗く
https://docs.oracle.com/cd/E19455-01/806-2720/msgs-1171/index.html

ピアにより接続が強制的にクローズされました。通常は、タイムアウトや再起動によるリモートホスト接続の切断が原因です。

ピアって何??
AWTとピア
AWT(Abstract Window Toolkit)はJavaでGUI建築をサポートするパッケージ
GUI建築にはAWTの知識が必要
GUIのボタンやスクロールなどのオブジェクトをコンポーネントと呼ぶ
AWTはプラットフォーム依存のウィンドウ操作やAPIを意識することなく建築できる
AWTが提供するコンポーネント・クラス群のことをピアと呼ぶ
JavaプログラムがAWTコンポーネントを生成し、さらにそのコンポーネントがピアを生成する

Java.peerパッケージ
awtの各コンポーネントが、各ウィンドウシステムで実現される際に、システムレベルに対応したクラスに実装すべき機能を提供するインターフェイスの集まり

内部的に使われているのかーーーーーーーー
Java勉強しないとなー

Capistranoの仕組みを理解する

まず、deploy のディレクトリに移動します。
cap install でcapistanoのファイルをインストールします
[vagrant@localhost deploy]$ cap install
mkdir -p config/deploy
create config/deploy.rb
create config/deploy/staging.rb
create config/deploy/production.rb
mkdir -p lib/capistrano/tasks
create Capfile
Capified

こんな感じでファイルが作られます。

config/deploy.rb

# config valid for current version and patch releases of Capistrano
lock "~> 3.11.0"

set :application, "my_app_name"
set :repo_url, "git@example.com:me/my_repo.git"

# Default branch is :master
# ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp

# Default deploy_to directory is /var/www/my_app_name
# set :deploy_to, "/var/www/my_app_name"

# Default value for :format is :airbrussh.
# set :format, :airbrussh

# You can configure the Airbrussh format using :format_options.
# These are the defaults.
# set :format_options, command_output: true, log_file: "log/capistrano.log", color: :auto, truncate: :auto

# Default value for :pty is false
# set :pty, true

# Default value for :linked_files is []
# append :linked_files, "config/database.yml"

# Default value for linked_dirs is []
# append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "public/system"

# Default value for default_env is {}
# set :default_env, { path: "/opt/ruby/bin:$PATH" }

# Default value for local_user is ENV['USER']
# set :local_user, -> { `git config user.name`.chomp }

# Default value for keep_releases is 5
# set :keep_releases, 5

# Uncomment the following to require manually verifying the host key before first deploy.
# set :ssh_options, verify_host_key: :secure

set:application, set :repo_urlでgitのレポジトリを書く

CentOSにCapistranoをinstall

1. rubyが入っているかバージョン確認

[vagrant@localhost ~]$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]

2. 続いてcapistranoが入っているか確認

[vagrant@localhost ~]$ cap --version
-bash: cap: コマンドが見つかりません

3. Capistranoをinstall
gem install capistrano とします。
[vagrant@localhost deploy]$ gem install capistrano
Fetching: net-ssh-5.0.2.gem (100%)
Successfully installed net-ssh-5.0.2
Fetching: net-scp-1.2.1.gem (100%)
Successfully installed net-scp-1.2.1
Fetching: sshkit-1.18.0.gem (100%)
Successfully installed sshkit-1.18.0
Fetching: airbrussh-1.3.1.gem (100%)
Successfully installed airbrussh-1.3.1
Fetching: concurrent-ruby-1.1.4.gem (100%)
Successfully installed concurrent-ruby-1.1.4
Fetching: i18n-1.2.0.gem (100%)

HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
But that may break your application.

Please check your Rails app for ‘config.i18n.fallbacks = true’.
If you’re using I18n 1.1.x and Rails (< 6.0), this should be 'config.i18n.fallbacks = [I18n.default_locale]'. If not, fallbacks will be broken in your app by I18n 1.1.x. For more info see: https://github.com/svenfuchs/i18n/releases/tag/v1.1.0 Successfully installed i18n-1.2.0 Fetching: capistrano-3.11.0.gem (100%) Successfully installed capistrano-3.11.0 Parsing documentation for net-ssh-5.0.2 Installing ri documentation for net-ssh-5.0.2 Parsing documentation for net-scp-1.2.1 Installing ri documentation for net-scp-1.2.1 Parsing documentation for sshkit-1.18.0 Installing ri documentation for sshkit-1.18.0 Parsing documentation for airbrussh-1.3.1 Installing ri documentation for airbrussh-1.3.1 Parsing documentation for concurrent-ruby-1.1.4 Installing ri documentation for concurrent-ruby-1.1.4 Parsing documentation for i18n-1.2.0 Installing ri documentation for i18n-1.2.0 Parsing documentation for capistrano-3.11.0 Installing ri documentation for capistrano-3.11.0 Done installing documentation for net-ssh, net-scp, sshkit, airbrussh, concurrent-ruby, i18n, capistrano after 21 seconds 7 gems installed
4. Capistranoのバージョン確認
[vagrant@localhost deploy]$ cap –version
Capistrano Version: 3.11.0 (Rake Version: 12.3.2)

OAuth2.0 の仕組みとrfc

OAuth2.0って何??

OAuthは権限の認可を行うオープンスタンダード
OAuth2.0の4種類のロール
1.resource owner(リソースオーナー) ※エンドユーザーとも
2.resource server(リソースサーバー)
3.client(クライアント)
4.authorization server(認可サーバー)

WebserverA (エンドユーザー)からwebserverB(client)にアクセスすることを許可する
Aの信任を得た認可サーバーからBに対するアクセストークンを発行してもらい、Bにアクセストークンを渡す
Bのパスワードを入力せずに、Bの一部の権限だと実行することが重要

githubに公開鍵を登録して確認する方法

まず、ローカルのコマンドラインで、ssh-keygen -t rsaとして、公開鍵(id_rsa.pub)、秘密鍵(id_rsa)を作ります。

Github personal settingsのSSH and GPG keysにアクセスします。
https://github.com/settings/keys

右上のNew SSH Keyを押下。

title:公開鍵(id_rsa.pub)の名前を入れる。拡張子のpubは必要ないので、id_rsaのみ
Key:公開鍵の中身を入れます。

ssh -T git@github.comで接続確認
ローカルから、ssh -T git@github.comと打ち込みます。

>ssh -T git@github.com
Enter passphrase for key 'C:\Users\hoge/.ssh/id_rsa':
Hi githubix! You've successfully authenticated, but GitHub does not provide shell access.

You’ve successfully authenticatedと表示されればOK
簡単でしょ?

Could not open a connection to your authentication agent.

linuxにログインして、ssh-add -lと打つと、「Could not open a connection to your authentication agent.」と返ってくる。

agrant@precise64:~$ ssh-add -l
Could not open a connection to your authentication agent.

どうやらssh-agentが起動していない模様。eval ‘ssh-agent’と打つ。evalはシェルを実行

vagrant@precise64:~$ eval ‘ssh-agent’
SSH_AUTH_SOCK=/tmp/ssh-GxTXywae1697/agent.1697; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1698; export SSH_AGENT_PID;
echo Agent pid 1698;

ssh-agent: 必要な時に秘密鍵を渡してくれる

再度、ssh-add -lと打つ

vagrant@precise64:~$ ssh-add -l
Could not open a connection to your authentication agent.

なにいいいいいいいいいいいいいいいいい

eval `ssh-agent -s`とする

vagrant@precise64:~$ eval `ssh-agent -s`
Agent pid 1708
vagrant@precise64:~$ ssh-add -l
The agent has no identities.

ひゃほおおおおおおおおおお