openssl genrsa -aes256 -out customerCA.key 2048
# output:
Enter PEM pass phrase: Skill53##
Verifying - Enter PEM pass phrase: Skill53##
Shell
복사
openssl req -new -x509 -days 3652 -key customerCA.key -out customerCA.crt
# output:
Enter pass phrase for customerCA.key: Skill53##
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) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:
Shell
복사
<cluster_id>_ClusterCsr.csr 파일 Bastion Server에 업로드 후 진행
openssl x509 -req -days 3652 -in <cluster_id>_ClusterCsr.csr \
-CA customerCA.crt \
-CAkey customerCA.key \
-CAcreateserial \
-out <cluster_id>_CustomerHsmCertificate.crt
# output:
Certificate request self-signature ok
subject=C=US + ST=CA + OU=LS2 + L=SanJose + O=Marvell, CN=HSM:RCN2342B07130:PARTN:19, for FIPS mode
Enter pass phrase for customerCA.key: Skill53##
Shell
복사
위에서 생성한 <cluster ID>_CustomerHsmCertificate.crt를 넣고, Issuing certificate에는customerCA.crt를 넣고, Upload and intialize
•
HSM은 아래와 같이 가용영역 별로 존재해야합니다.
wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-cli-latest.amzn2023.x86_64.rpm
sudo yum install ./cloudhsm-cli-latest.amzn2023.x86_64.rpm -y
Shell
복사
sudo /opt/cloudhsm/bin/configure-cli -a <ENI IPv4 address>
Shell
복사
Knowledge
sudo cp customerCA.crt /opt/cloudhsm/etc/customerCA.crt
Shell
복사
•
CloudHSM CLI를 대화형 모드로 실행
/opt/cloudhsm/bin/cloudhsm-cli interactive
# quit
Shell
복사
•
초기 관리자 암호를 설정
cluster activate
# output:
Enter password: Skill53##
Confirm password: Skill53##
{
"error_code": 0,
"data": "Cluster activation successful"
}
Shell
복사
•
암호화 작업 사용자를 생성하기 위해 admin으로 login
login --username admin --role admin
# output:
Enter password: Skill53##
{
"error_code": 0,
"data": {
"username": "admin",
"role": "admin"
}
}
Shell
복사
user create --username crypto_admin --role crypto-user
# output:
Enter password: Skill53##
Confirm password: Skill53##
{
"error_code": 0,
"data": {
"username": "crypto_admin",
"role": "crypto-user"
}
}
Shell
복사
user list
Shell
복사
SSL Nginx
sudo yum install nginx -y
Shell
복사
mkdir -p /home/ec2-user/hsm
Shell
복사
/opt/cloudhsm/bin/cloudhsm-cli interactive
Shell
복사
•
crypto-user의 사용자 이름으로 변경하여 로그인
login --username crypto_admin --role crypto-user
# output:
Enter password: Skill53##
{
"error_code": 0,
"data": {
"username": "crypto_admin",
"role": "crypto-user"
}
}
Shell
복사
•
key generate-asymmetric-pair rsa 명령을 사용하여 RSA 키 쌍을 생성
key generate-asymmetric-pair rsa \
--public-exponent 65537 \
--modulus-size-bits 2048 \
--public-label tls_rsa_pub \
--private-label tls_rsa_private
--private-attributes sign=true
Shell
복사
•
key generate-file 명령을 사용하여 개인 키를 가짜 PEM 형식으로 내보내고 파일에 저장
key generate-file --encoding reference-pem --path /home/ec2-user/hsm/fake-key.pem --filter attr.label=tls_rsa_private
Shell
복사
quit
Shell
복사
•
AWS CloudHSM OpenSSL Dynamic Engine 설치
wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-dyn-latest.amzn2023.x86_64.rpm
sudo yum install ./cloudhsm-dyn-latest.amzn2023.x86_64.rpm -y
Shell
복사
export CLOUDHSM_PIN=crypto_admin:Skill53##
sudo /opt/cloudhsm/bin/configure-cli --hsm-ca-cert customerCA.crt
Shell
복사
sudo /opt/cloudhsm/bin/configure-cli -a <ENI IPv4 address>
Shell
복사
sudo su
Shell
복사
sudo cat << EOF > /opt/cloudhsm/etc/cloudhsm-dyn.cfg
{
"clusters" : [{
"type": "hsm1",
"cluster":{
"hsm_ca_file": "/opt/cloudhsm/etc/customerCA.crt",
"servers":[
{
"hostname": "<ENI IPv4 address>",
"port": 2223,
"enable": true
}
],
"options": {
"validate_key_at_init": false
}
}
}],
"logging": {
"log_type": "term",
"log_level": "error"
}
}
EOF
exit
Shell
복사
openssl req -engine cloudhsm -new -key /home/ec2-user/hsm/fake-key.pem -out web_server.csr
Shell
복사
openssl x509 -engine cloudhsm -req -days 365 -in web_server.csr -signkey /home/ec2-user/hsm/fake-key.pem -out web_server.crt
Shell
복사
sudo mkdir -p /etc/pki/nginx/private
Shell
복사
sudo cp web_server.crt /etc/pki/nginx/server.crt
Shell
복사
sudo cp /home/ec2-user/hsm/fake-key.pem /etc/pki/nginx/private/server.key
Shell
복사
sudo chown nginx /etc/pki/nginx/server.crt /etc/pki/nginx/private/server.key
Shell
복사
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
Shell
복사
아래의 코드 추가
all code nginx.conf
sudo vim /etc/nginx/nginx.conf
Shell
복사
sudo cp /lib/systemd/system/nginx.service /lib/systemd/system/nginx.service.backup
Shell
복사
•
파일을 연 후 서비스 섹션에 EnvironmentFile=/etc/sysconfig/nginx 코드 추가
sudo vim /lib/systemd/system/nginx.service
Shell
복사
sudo mkdir -p /etc/sysconfig
Shell
복사
•
파일을 연 후 CLOUDHSM_PIN=<CU user name>:<password> 코드 추가
sudo vim /etc/sysconfig/nginx
Shell
복사
sudo systemctl stop nginx
Shell
복사
sudo systemctl daemon-reload
Shell
복사
sudo systemctl start nginx
Shell
복사
sudo systemctl enable nginx
Shell
복사






















