新人社内SEのメモ書き

琵琶湖生まれ琵琶湖育ち。京都の産業用機器メーカの社内SE。自身の体験した事や勉強したことなど記事にしてます。自作PCとドライブが大好き。

[Apache2.2]Windows上SSL/TLS(HTTPS)化する方法

目標

Windows Server2016上のApache2.2をHTTPS通信できるようにする

構築環境

  • Window Server 2016
  • Apache2.2.34 win32 VC10
  • サーバ証明書server.crt
  • CA証明書ca.crt これは、自己署名(オレオレ)証明書の場合はない
  • サーバ秘密鍵server.key

手順

  1. 証明書類を配置する
$ mv ./server.crt C:/Apache2/conf/ssl-cert/server.crt
$ mv ./server.key C:/Apache2/ssl-key/server.key
$ mv ./ca.crt C:/Apache2/conf/ssl-cert/ca.crt
  1. C:/Apache2/conf/httpd.confの編集
---122行目あたり---
#LoadModule ssl_module modules/mod_ssl.so
↓コメントアウトを解除
LoadModule ssl_module modules/mod_ssl.so

---493行目あたり---
#Include conf/extra/httpd-ssl.conf
↓コメントアウトを解除
Include conf/extra/httpd-ssl.conf
  1. C:/Apache2/conf/extra/httpd-ssl.confの編集
---134行目あたり---
SSLCertificateFile "c:/Apache2/conf/server.crt"
↓
SSLCertificateFile "c:/Apache2/conf/ssl-cert/server.crt"

---144行目あたり---
SSLCertificateKeyFile "c:/Apache2/conf/server.key"
↓
SSLCertificateKeyFile "c:/Apache2/conf/ssl-key/server.key"

---155行目あたり---
#SSLCertificateChainFile "c:/Apache2/conf/server-ca.crt"
↓
SSLCertificateChainFile "c:/Apache2/conf/ssl-cert/ca.crt"
  1. Apache2.2の再起動
net stop Apache2.2
net start Apache2.2

httpsでアクセスすると画像みたいになってるはず(自己署名証明書だから赤色になってる)

f:id:tacchan33:20190920233349p:plain
httpsでアクセス

[OpenSSL]自己署名証明書を生成する方法

目標

サーバ証明書(公開鍵)www.example.jp.csrとサーバ秘密鍵www.example.jp.keyを生成する

構築環境

  • Windows Server 2016
  • OpenSSL 1.0.2l
    あんまりOS関係ないので、Linuxでもほぼ一緒だと思う

手順

  1. コンソールで秘密鍵の生成
    秘密鍵は、公開鍵で暗号化したものをサーバがこの鍵で復号化するものです
# openssl genrsa > www.example.jp.key
Generating RSA private key, 2048 bit long modulus
..............................................................+++
..+++
e is 65537 (0x10001)
  1. コンソールでCSRファイルを生成
# openssl req -new -key www.example.jp.key > www.example.jp.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]:jp
State or Province Name (full name) [Some-State]:kyoto
Locality Name (eg, city) []:kyoto
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company
Organizational Unit Name (eg, section) []:Department
Common Name (e.g. server FQDN or YOUR name) []:www.example.jp
Email Address []:example@example.jp

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

まずCSRファイルってなんやねんってことですが、認証局(CA)に対して、SSLサーバ証明書への証明を申請する内容。
CSRファイルには「公開鍵」とそれの所有者情報と申請者が対応する秘密鍵を持っているのを示す申請者の署名が書いている。
(引用元CSRファイルとは何ですか? | SSLサーバ証明書のクロストラスト)

  1. サーバ証明書を生成 実際にお金を払って証明書を発行する場合は、前段階のCSRファイルを認証局(CA)に渡して証明してもらいます。
    今回は自己署名証明書なんで自己署名します。
# openssl x509 -req -signkey www.example.jp.key < www.example.jp.csr > www.example.jp.crt
Signature ok
subject=/C=jp/ST=kyoto/L=kyoto/O=Company/OU=Department/CN=www.example.jp/emailAddress=example@example.jp
Getting Private key

[GitLab]HTTPS(SSL/TLS)にする方法

仕事で、オンプレGitLabを運用していましたが、HTTPS化した方がいいねってことになって、ワイルドカード証明書HTTPS化したので復習もかねてアウトプットします

目標

CentOS7上で運用しているGitLabをHTTPS(SSL/TLS)で通信できるようにする

構築環境

ファイル名 形式(エンコーディング) 説明
ca.crt Base64(.pem) 中間CA証明書
certs.crt Base64 GitLabサーバ証明書
certs.key Base64 GitLabサーバのRSA秘密鍵パスフェーズなし

手順

  1. SSL/TLS証明書の配置
$ mkdir /etc/gitlab/ssl/
$ cp ./certs.crt /etc/gitlab/ssl/gitlab.example.co.jp.crt
$ cat ./ca.crt >> /etc/gitlab/ssl/gitlab.example.co.jp.crt
$ cp ./certs.key /etc/gitlab/ssl/gitlab.example.co.jp.key
$ cd /etc/gitlab/ssl/
$ chown root gitlab.example.co.jp.crt
$ chown root gitlab.example.co.jp.key
$ chmod 404 gitlab.example.co.jp.crt
$ chmod 400 gitlab.example.co.jp.key
  1. /etc/gitlab/gitlab.rbを編集 10行目あたり
## GitLab URL
external_url 'http://localhost'

↓

external_url 'https://gitlab.example.co.jp'

1000行目あたり
NGINXのセクション内のコメントアウトを解除します。

################################################################################
## GitLab NGINX
##! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html
################################################################################
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt"
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"

↓

nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"
  1. GitLabの再構成および再起動
$ gitlab-ctl reconfigure
$ gitlab-ctl restart

/var/log/gitlab/nginx/error.logになにもでてなければいけてるはず

[Windows]MySQL5.5から5.6にアップグレードする方法

目標

Windows Server 2016の上で運用しているMySQL5.5(zip版)からMySQL5.6にアップグレードする

構築環境

アップグレード前の状態

f:id:tacchan33:20190906230906p:plainf:id:tacchan33:20190905225152p:plainf:id:tacchan33:20190905223637p:plainf:id:tacchan33:20190905225051p:plain
ディレクトリ階層
C:/MySQL5.5.62/data/内のwebappフォルダが実際に作成したデータベースで、それ以外のファイル・フォルダはシステムが使ってるものです

テーブル名 ストレージエンジン
user MyISAM
admin InnoDB

f:id:tacchan33:20190905230500p:plain
webappデータベースの中身

手順

  1. MySQL起動している人は落とす
  2. サービス登録している人は、コマンドプロンプトとかに管理者権限でsc delete MySQL5.5.62を入力
  3. 画像のように配置する
    f:id:tacchan33:20190905232858p:plainf:id:tacchan33:20190905233237p:plainf:id:tacchan33:20190905233252p:plain
    MySQL5.6.45配置
  4. C:/MySQL5.6.45/data/内にC:/MySQL5.5.62/data/内のperformance_schematest以外をコピーして上書きする
  5. コマンドプロンプトC:/MySQL5.6.45/bin/mysqld.exe --console入力で起動させ、エラーがないか確認
    f:id:tacchan33:20190907004916p:plain
    mysqld実行結果
  6. アップグレードしたので、データベースやテーブルの整合性チェックとかのために、コマンドプロンプトC:/MySQL5.6.45/bin/mysql_upgrade.exe -u root -p入力して実行
    f:id:tacchan33:20190907004621p:plain
    mysql_upgrade結果
  7. コマンドプロンプトC:/MySQL5.6.45/bin/mysql.exe -u root -p入力でログインして、コピーしたデータベースがみれるかチェック
    f:id:tacchan33:20190905235335p:plain
    コピー後のデータチェック
  8. 手順5のコンソールでCtrl+CでMySQL5.6.45を停止させ、C:/MySQL5.6.45/bin/mysqld.exe --install MySQL5.6.45と入力し、サービス一覧で追加させていることを確認する

詳しくはここら辺みるといいかも
MySQL :: MySQL 5.6 リファレンスマニュアル :: 2.3.7 Windows 上の MySQL をアップグレードする
MySQL :: MySQL 5.6 リファレンスマニュアル :: 2.11.1.3 MySQL 5.5 から 5.6 へのアップグレード

自宅サーバのPSUが壊れたので交換した話

色々な検証をしている自宅サーバPSU(Power Supply Unit)ようするに電源ユニットがヘタって来たので、交換した話です。

これが自宅サーバです。HPのモニタの下のやつです。大きさはラック4Uで耳もつけれるケースで、珍しく横置きケースです f:id:tacchan33:20190906221831j:plain

なんで、こんな経緯に至ったのかというと、このサーバの中身のマザボとかHDDとか電源ユニットとかすべて、今使ってる自作PCの前に使ってた自作PCのパーツでリビルドしてます。 ちなみにスペックこんな感じ

項目 パーツ
CPU Intel Core i7-2700K
メモリ DDR3 4GBx2枚 2GBx2枚
M/B GIGABYTE GA-Z77X-UP4-TH
HDD Seagate 2TB
PSU 玄人志向 KRPW-G2-850W/90+

前の自作PCは2013年ぐらいに作ったもんだから、だいぶ古くなってる状態
マザボと電源は作ってから1年後ぐらいに新しいのと交換してますが・・・

そんなこともあり、高負荷をかけるとkernel-power41でPCが落ちたので、今年の3月に新しくPCを組んだわけです。

前のPCのパーツを利用してVM Ware vSpehereとかいれて検証用の自宅サーバにしていたのですが、高負荷にならなくても電源がおちるようになってきました

なので、原因はすぐわかったので、AmazonでCorsairの電源をぽちり、速達便で届けてもらいました

Corsair CX450M 80PLUS BRONZE認定 PC電源ユニット PS626 CP-9020101-JP

Corsair CX450M 80PLUS BRONZE認定 PC電源ユニット PS626 CP-9020101-JP

お値段が4800円ぐらいなのに、保証が5年という流石Corsair様ってかんじ

交換作業

実際に電源ユニットが届いたので、作業開始!
まず、トップパネルをあけた状態がこれ ケーブルとか抜いちゃってるけど・・・

f:id:tacchan33:20190906224124j:plain
交換前
んで1,2分で交換したのがこんな感じ
f:id:tacchan33:20190906224312j:plain
交換後
電源変えただけなので、そんな見た目かわんないですね

これで起動できるので、色々検証して次の記事を書こうと思います

[Windows]コマンドからファイル共有を操作

前記事のコマンドでユーザ・グループの操作に引き続き、仕事で使うことがあったのでアウトプットします

#共有フォルダ一覧
$net share    #Command Prompt
$Get-SmbShare   #PowerShell

#共有フォルダ詳細
$Get-SmbShareAccess [共有フォルダ名]    #PS

#共有フォルダを作成
$net share [共有フォルダ名] [パス] /add    #cmd
$New-SmbShare -Name [共有フォルダ名] -Path [パス] -FullAccess [ユーザ名]    #PS

#共有フォルダ削除
#net share [共有フォルダ名] /delete    #cmd

使いどころが少ないとは思いますが、共有フォルダ一覧をファイルに書き出す場合は以下になります

Get-WmiObject -class win32_share | Select-Object Name,Path,Description | Export-Csv -Path [ファイル名] -Encoding UTF8 -NoTypeInformation

ファイル共有に関しては、まだまだ書くことがあるので、その都度追記していきます

[Windows]コマンドからユーザ・グループを追加・変更・削除する方法

仕事でファイルサーバのリプレースでWindows Server2016にする機会があり、windowsのコマンドを学んだので、忘れても見返せるようアウトプット

  • ローカルユーザ
#一覧表示
$net user    #Command Prompt
$Get-LocalUser    #PowerShell

#ユーザ追加
$net user [ユーザ名] [パスワード] /add    #cmd
$New-LocalUser [ユーザ名] [パスワード]    #PS

#ユーザ削除
$net user [ユーザ名] /delete    #cmd
$Remove-LocalUser [ユーザ名]    #PS
  • ローカルグループ
#一覧表示
$net localgroup    #cmd
$Get-Localgroup    #PS

#グループの詳細表示(所属ユーザも)
$net localgroup [グループ名]    #cmd
$Get-LocalGroupMember [グループ名]    #PS

#グループ作成
$net localgroup [グループ名] /comment:"グループ説明" /add    #cmd
$New-LocalGroup -Name [グループ名] -Comment "グループ説明"    #PS

#グループ名変更
$Rename-LocalGroup [グループ名]

#グループにユーザを追加・削除
$net localgroup [グループ名] [ユーザ名1] [ユーザ名2] /add    #cmd 追加
$net localgroup [グループ名] [ユーザ名1] [ユーザ名2] /delete    #cmd 削除
$Add-LocalGroupMember [グループ名] [ユーザ名1] [ユーザ名2]    #PS 追加
$Remove-LocalGroupMember [グループ名] [ユーザ名1] [ユーザ名2]    #PS 削除

#グループ削除
$net localgroup [グループ名] /delete    #cmd
$Remove-LocalGroup [グループ名]    #PS

グループ作成とグループにユーザ追加削除は、ユーザ名が入っているか否かしか違いがなく、間違えないように注意!

グループ一覧をcsvで書き出す際はこんな感じ

Get-WmiObject -class win32_Group | Select-Object Domain,Name,Caption,SID | Export-Csv -Path [ファイル名] -Encoding UTF8 -NoTypeInformation

Windowsファイルサーバをせっかく触ったので、次回、ファイル・ディレクトリのアクセス権を操作するためのコマンドを記事にします