end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

blender 2.9 で、辺に沿って、頂点移動

方法は、以下の2つがありますが、「Gキー → Gキー」がお手軽かと思います。

方法 1 - Gキー → Gキー

「G」キーを2回押せば、辺に沿って、頂点移動します。

方法 2 - その他

画面上にある「Transform Orientation」において

「V」→「+」→「Edge」を選択すると、座標系が変更され、 辺に沿った頂点移動が可能です。

f:id:end0tknr:20210923092519p:plain

▼▼▼▼▼▼▼▼

f:id:end0tknr:20210923092542p:plain

fail2ban による不正アクセスの監視と、接続拒否

存在も知らなかった為、メモ。

sshapacheに対し、ログを監視し、不正と判定した場合、 firewall で接続拒否するらしい。

有効のようですが、今後、気が向いたら、試してみます。

blender 2.9 における面貼りサンプル ( topologie )

www.youtube.com

上記の youtube からのメモ

目や口のように可動部の周りには、円を描くように配置

f:id:end0tknr:20210921050755p:plain

f:id:end0tknr:20210921210841p:plain

関節の上側には、ナイフで四角を追加

f:id:end0tknr:20210921050822p:plain

上半身(面数:多)と、下半身(面数:少)は、ナイフで四角を追加し、面数差を解消

f:id:end0tknr:20210921050831p:plain

f:id:end0tknr:20210921050839p:plain

手先(面数:多)と、手首(面数:少)は、面を縮小し、面数差を解消

f:id:end0tknr:20210921050850p:plain

f:id:end0tknr:20210921050859p:plain

足首から面を押し出し(Extrude)、足指まで作成

f:id:end0tknr:20210921050912p:plain

f:id:end0tknr:20210921050922p:plain

subdivision surface 適用時に爪先が不自然な形となる為、縦にループカット or Ctrl-J によるナイフ

f:id:end0tknr:20210921050932p:plain

上記により、足指根本に5角形が複数発生する為、ナイフで四角化

f:id:end0tknr:20210921050946p:plain

f:id:end0tknr:20210921050955p:plain

f:id:end0tknr:20210921051003p:plain

blender 2.9 で、頂点を結合/統合/マージ

以下の 2種類の方法があります。

2点を mergeする場合、2点を選択後、M キー

f:id:end0tknr:20210920215453p:plain

重なっている複数の点を mergeする場合、Aで頂点を全選択し、Mesh → Clean up → Merge by Distance

f:id:end0tknr:20210920215636p:plain

NVIDIA GEFORCE RTX 3060 の ドライバー ダウンロード url

GG-RTX3060-E12GB/OC/DF | NVIDIA GEFORCE RTX 3060 搭載 グラフィックボード | GALAKURO GAMING(ギャラクロゲーミング)

から、

NVIDIAドライバダウンロード

へ、画面遷移すると、検索&ダウンロードできます。

blender 2.9 で、頂点(vertex)の表示サイズを変更

私には、default の 3pxでは小さい為、6pxへ

step 1 - Edit menu → Preference

f:id:end0tknr:20210920155903p:plain

step 2 - Themes → 3D Viewport

f:id:end0tknr:20210920155912p:plain

step 3 - 下へ、スクロールし、Vertex Size 変更

f:id:end0tknr:20210920155921p:plain

python3による client認証ページへのアクセス

amazon linux2 + apache2.4 + openssl による オレオレ クライアント認証 - end0tknr's kipple - web写経開発

更に上記entryの続き。

python3で クライアント認証ページへアクセスするには、 「urllib + ssl」による方法と、「requests.Session」によるものがあります。

urllib + ssl による場合

以下の通りです。clinetの証明書や秘密鍵は、先程のentryのものを使用しています。

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*-

import ssl
import urllib.request

cert_file = "./client.crt"      # 証明書
priv_key  = "./client.key"      # 秘密鍵
http_timeout = 10       #sec

req_url = "https://apache.end0tknr.com/private"

def main():

    sslctx = ssl.create_default_context()
    sslctx.load_cert_chain(cert_file, priv_key)
    
    req = urllib.request.Request(req_url)

    try:
        res = urllib.request.urlopen(req,
                                     data=None,
                                     timeout=http_timeout,
                                     context=sslctx)
    except urllib.error.HTTPError as err:
        print("WARN",err.code, req_url,file=sys.stderr)
        return None
    except urllib.error.URLError as err:
        print("ERROR",err.reason, req_url,file=sys.stderr)
        return None

    print("DONE HTTP",res.getcode(), res.geturl() )
    print( res.read() )
    res.close()


if __name__ == '__main__':
    main()

requests.Session による場合

以下の通りです。

尚、client_crt_key.txt 内には、※1のように証明書と秘密鍵を記載しています。

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*-

from requests import Session

def main():
    s = Session()
    s.cert = "./client_crt_key.txt"
    r = s.get("https://apache.end0tknr.com/private/")
    print(r.status_code)
    print(r.text)


if __name__ == "__main__":
    main()

※1 client_crt_key.txt の内容

-----BEGIN CERTIFICATE-----
MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJKUDEO
<略>
X0Bxim1aYykRSf8n4cgS8CSkSzOBwpXVeO4G7OSB8hCNoUQ=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxjsUhT/Q/dxIqQQChUIsUFdwL7W2qfx46npvQDFtU9Yo65up
<略>
qiayJCCYGn7/Qqm8/U28cEJDUhQzu2joun+ASHrT0WtW+jwG9BkXgv0=
-----END RSA PRIVATE KEY-----

amazon linux2 + apache2.4 + openssl による オレオレ クライアント認証

amazon linux2 + apache2.4 + letsencrypt による ssl化 - end0tknr's kipple - web写経開発

上記entryの続き? として、

クライアント証明書認証の設定メモ(Apache2.4 + CentOS) | あぱーブログ

を、写経(≒コピペ)しています。

認証用 html の作成

今回、https://apache.end0tknr.com/private/ 以下に対し、 クライアント認証化しますので、mkdir と index.html作成を行います。

$ sudo mkdir /var/www/html/private
$ sudo vi /var/www/html/private/index.html

private認証局 作成

まず、openssl.cnf の変更と、serial の作成を行います。

$ sudo vi /etc/pki/tls/openssl.cnf

[ usr_cert ]
old) basicConstraints=CA:FALSE
new) basicConstraints=CA:TRUE
 
[ v3_ca ]
old) # nsCertType = sslCA, emailCA
new) nsCertType = sslCA, emailCA
$ sudo vi /etc/pki/CA/serial
00

その上で、private認証局を作成します。

$ sudo /etc/pki/tls/misc/CA -newca

CA certificate filename (or enter to create)
  :
Enter PEM pass phrase: 【ないしょ、≠null】
Verifying - Enter PEM pass phrase: 【ないしょ、≠null】
(略)
Country Name (2 letter code) [XX]: JP
State or Province Name (full name) []: Tokyo
Locality Name (eg, city) [Default City]:【ないしょ、≠null】
Organization Name (eg, company) [Default Company Ltd]: end0tknr.com
Organizational Unit Name (eg, section) []: sales
Common Name (eg, your name or your server's hostname) []: end0tknr.com
Email Address []: 【ないしょ、≠null】
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/./cakey.pem: 【ないしょ、≠null】
Check that the request matches the signature
Signature ok

最後に chmod して、この部分は完了です。

$ sudo chmod 400 /etc/pki/CA/private/cakey.pem

client証明書の発行

まず、先程、変更した /etc/pki/tls/openssl.cnf を再び変更します。

$ sudo vi /etc/pki/tls/openssl.cnf

[ usr_cert ]
old) basicConstraints=CA:TRUE
new) basicConstraints=CA:FALSE

old) # nsCertType = client, email, objsign
new) nsCertType = client, email, objsign

[ v3_ca ]
old) nsCertType = sslCA, emailCA
new) # nsCertType = sslCA, emailCA

次に、mkdir や、秘密鍵/発行要求(CSR)作成を行います。

$ sudo su -
# mkdir /etc/pki/tls/client
# cd /etc/pki/tls/client/

# sudo openssl genrsa -out client.key 2048

# sudo openssl req -new -key client.key -out client.csr

Country Name (2 letter code) [XX]: JP
State or Province Name (full name) []: Tokyo
Locality Name (eg, city) [Default City]:【ないしょ、≠null】
Organization Name (eg, company) [Default Company Ltd]: end0tknr.com
Organizational Unit Name (eg, section) []: sales
Common Name (eg, your name or your server's hostname) []: client.end0tknr.com
Email Address []:【ないしょ、≠null】
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: NULL
An optional company name []: NULL

その上で、client証明書発行と、pkcs12形式への変換を行います。

(pkcs12では、証明書と秘密鍵が1つのファイルに存在します)

# openssl ca -in client.csr -out client.crt
# openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12

こまでの操作により、以下の証明書が作成されますので、ブラウザへ、installして下さい。

尚、私の場合、firefoxの設定から、installしました。

/etc/pki/tls/client/client.p12

apache 2.4 の設定変更

ssl.conf を以下のように変更すると、/private 以下のみclient認証されます。

尚、今回は、オレオレ証明書を使用している為、「SSLVerifyDepth 1」としていますが、 正式なCAを使用する場合、「SSLVerifyDepth 10」のようにするのかと思います。

$ sudo vi /etc/httpd/conf.d/ssl.conf

old) #SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
new) SSLCACertificateFile /etc/pki/CA/cacert.pem

#以下を追加

<Location /private>
SSLVerifyClient require
SSLVerifyDepth  1

SSLRequire ( %{SSL_CLIENT_S_DN_C}  eq "JP" and \
             %{SSL_CLIENT_S_DN_ST} eq "Tokyo" and \
             %{SSL_CLIENT_S_DN_O} in {"end0tknr.com"} \
            or %{REMOTE_ADDR} =~ m/^192\.168.+$/ )
</Location>

amazon linux2 + apache2.4 + letsencrypt による ssl化

awsによるssl証明書(Certificate Manager)は、elbや cloud frontに適用できるものの、 ec2には適用できないようですので、メモ

install apache2.4

$ sudo yum update
$ sudo yum install httpd
$ sudo yum install mod_ssl

$ sudo systemctl enable httpd.service
$ sudo systemctl start  httpd.service

$ sudo vi /var/www/html/index.html

config dns (route53)

すると、http://apache.end0tknr.com/ のように httpアクセスが可能になります。

install letsencrypt

$ sudo amazon-linux-extras install epel
$ sudo yum install certbot
$ certbot --version
certbot 1.11.0

$ sudo certbot certonly --manual \
   --server https://acme-v02.api.letsencrypt.org/directory \
   --preferred-challenges dns \
   -d apache.end0tknr.com \
   -m ないしょ@gmail.com

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Requesting a certificate for apache.end0tknr.com
Performing the following challenges:
dns-01 challenge for apache.end0tknr.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.apache.end0tknr.com with the following value:

dF-KM8rquJGCrLi0sz1leoKlDS_4PDTNYJlq8DnE3KI

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

再 config dns (route53)

先程の「Please deploy a DNS TXT record」として表示された内容を dns登録し、更に nslookup で確認

$ nslookup -type=txt _acme-challenge.apache.end0tknr.com
Server:     203.165.31.152
Address:    203.165.31.152#53

Non-authoritative answer:
_acme-challenge.apache.end0tknr.com
   text="dF-KM8rquJGCrLi0sz1leoKlDS_4PDTNYJlq8DnE3KI"

再 sudo certbot certonly

dns登録完了後、sudo certbot certonly の続きを実行すると、 以下のようにssl証明書のセットが作成されます。

Waiting for verification...
Cleaning up challenges
Subscribe to the EFF mailing list (email: end0tknr@gmail.com).

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/apache.end0tknr.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/apache.end0tknr.com/privkey.pem
   Your certificate will expire on 2021-12-13. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - 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


$ sudo ls -l /etc/letsencrypt/live/apache.end0tknr.com

total 4
lrwxrwxrwx 1  43 cert.pem -> ../../archive/apache.end0tknr.com/cert1.pem
lrwxrwxrwx 1  44 chain.pem -> ../../archive/apache.end0tknr.com/chain1.pem
lrwxrwxrwx 1  48 fullchain.pem -> ../../archive/apache.end0tknr.com/fullchain1.pem
lrwxrwxrwx 1  46 privkey.pem -> ../../archive/apache.end0tknr.com/privkey1.pem
-rw-r--r-- 1 692 README
$ sudo chmod 755 /etc/letsencrypt/archive/
$ sudo chmod 755 /etc/letsencrypt/live/

config apache for ssl

$ sudo vi /etc/httpd/conf.d/ssl.conf

 ## 証明書
 old) SSLCertificateFile /etc/pki/tls/certs/localhost.crt
 new) SSLCertificateFile /etc/letsencrypt/live/apache.end0tknr.com/cert.pem
 ## 鍵
 old) SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
 new) SSLCertificateKeyFile /etc/letsencrypt/live/apache.end0tknr.com/privkey.pem
 ## 中間証明書
 old) SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
 new) SSLCertificateChainFile /etc/letsencrypt/live/apache.end0tknr.com/chain.pem


$ apachectl configtest
Syntax OK
$ sudo systemctl start  httpd.service