Windows 10의 로컬 개발 환경에서 인증서 발행
17914 단어 letsencryptsslcertbottech
이마
[2021-06-10] 역시 WSL에 있는certbot에서 하는 것이 비교적 수월하기 때문에 나는 그 방법을 보충했다.
로컬 개발 환경에서도 HTTPS가 필요한데 조사하다'진짜'증명서를 사용해 HTTPS화하는 방법을 발견했다.
여기에 사용된 WACS의 버전은 2.1.17.1065(release,trimmed,standalone,64-bit)이다.
차리다
도메인 설정
사전 준비로 자신의 모든 도메인의 하위 도메인
test.suzume.dev
을 127..0.1 방향으로 A 레코드로 등록합니다.test.suzume.dev. 10800 IN A 127.0.0.1
인증서 클라이언트 설치
인증서 게시 클라이언트 WACS는 다음 링크에서 사용할 수 있습니다.
win-acme.v2.x.x.xx.x64.trimmed.zip
펼치기
C:/Apps/win-acme
(좋아하는 곳일 수 있음)C:/Apps/win-acme/wacs.exe
를 실행할 수 있습니다.실행하면 대화 형식으로 수속을 진행할 수 있다.웹 서버가 IIS인 경우 WACS는 IIS(관리자 권한이 필요함)를 설정할 수 있지만 Apache와 Nginx를 사용하기 때문에 관리자 권한이 필요하지 않습니다.
증서를 발행하다
그 다음에 상세하게 설명하고 대략적인 절차는 다음과 같다.
상세 단계
방금 설명한 바에 의하면 이 견해는 뛰어넘을 수 있다.
여기에 적힌
WACS를 시작하고 모든 수동 설정을 선택합니다.
> .\wacs.exe
A simple Windows ACMEv2 client (WACS)
Software version 2.1.17.1065 (release, trimmed, standalone, 64-bit)
Connecting to https://acme-v02.api.letsencrypt.org/...
Scheduled task not configured yet
Please report issues at https://github.com/win-acme/win-acme
N: Create certificate (default settings)
M: Create certificate (full options)
R: Run renewals (0 currently due)
A: Manage renewals (0 total)
O: More options...
Q: Quit
Please choose from the menu: M <ENTER>
(처음으로만) Let's Encerypt의 사용 규약에 동의하고 문제가 있을 때 연락처를 입력하십시오.
Terms of service: C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\LE-SA-v1.2-November-15-2017.pdf
Open in default application? (y/n*) - y <ENTER>
Do you agree with the terms? (y*/n) - y <ENTER>
Enter email(s) for notifications about problems and abuse (comma-separated): 連絡先メールアドレス <ENTER>
도메인 설정 방법 2: Manual input
1: Read site bindings from IIS
2: Manual input
3: CSR created by another program
C: Abort
How shall we determine the domain(s) to include in the certificate?: 2 <ENTER>
도메인 정보 입력
How shall we determine the domain(s) to include in the certificate?: test.suzume.dev <ENTER>
Target generated using plugin Manual: test.suzume.dev
Suggested friendly name '[Manual] test.suzume.dev', press <Enter> to accept or type an alternative: test.suzume.dev <ENTER>
도메인 이름 소유 확인: DNS 레코드 선택
The ACME server will need to verify that you are the owner of the domain
names that you are requesting the certificate for. This happens both during
initial setup *and* for every future renewal. There are two main methods of
doing so: answering specific http requests (http-01) or create specific dns
records (dns-01). For wildcard domains the latter is the only option. Various
additional plugins are available from https://github.com/win-acme/win-acme/.
1: [http-01] Save verification files on (network) path
2: [http-01] Serve verification files from memory
3: [http-01] Upload verification files via FTP(S)
4: [http-01] Upload verification files via SSH-FTP
5: [http-01] Upload verification files via WebDav
6: [dns-01] Create verification records manually (auto-renew not possible)
7: [dns-01] Create verification records with acme-dns (https://github.com/joohoi/acme-dns)
8: [dns-01] Create verification records with your own script
9: [tls-alpn-01] Answer TLS verification request from win-acme
C: Abort
How would you like prove ownership for the domain(s)?: 6 <ENTER>
CSR 암호화 기본값 2: RSA 키
After ownership of the domain(s) has been proven, we will create a
Certificate Signing Request (CSR) to obtain the actual certificate. The CSR
determines properties of the certificate like which (type of) key to use. If
you are not sure what to pick here, RSA is the safe default.
1: Elliptic Curve key
2: RSA key
C: Abort
What kind of private key should be used for the certificate?: 2 <Enter>
인증서 또는 키 파일 형식 선택2: PEM encoded files
When we have the certificate, you can store in one or more ways to make it
accessible to your applications. The Windows Certificate Store is the default
location for IIS (unless you are managing a cluster of them).
1: IIS Central Certificate Store (.pfx per host)
2: PEM encoded files (Apache, nginx, etc.)
3: PFX archive
4: Windows Certificate Store
5: No (additional) store steps
How would you like to store the certificate?: 2 <ENTER>
인증서 저장 위치 지정
Path to folder where .pem files are stored: C:\path\to\certs\test.suzume.dev <ENTER>
pfx 파일의 비밀번호는 1:None일 수 있습니다
1: None
2: Type/paste in console
3: Search in vault
Password to use for the .pfx files: 1 <ENTER>
다른 형식의 파일을 만들지 묻습니다. 필요하지 않기 때문에 5: NO (additional) store steps 를 선택하십시오.
1: IIS Central Certificate Store (.pfx per host)
2: PEM encoded files (Apache, nginx, etc.)
3: PFX archive
4: Windows Certificate Store
5: No (additional) store steps
Would you like to store it in another way too?: 5 <ENTER>
IIS를 사용하지 않았기 때문에 4:아니오(additional) 설치 steps 를 선택합니다.
Installation plugin IIS not available: No supported version of IIS detected.
With the certificate saved to the store(s) of your choice, you may choose one
or more steps to update your applications, e.g. to configure the new
thumbprint, or to update bindings.
1: Create or update https bindings in IIS
2: Create or update ftps bindings in IIS
3: Start external script or program
4: No (additional) installation steps
Which installation step should run first?: 4 <ENTER>
(첫 번째 도메인만 해당) 도메인 이름 소유를 확인합니다.화면에 표시된 대로 TXT 레코드를 설정하고 Enter 키를 누릅니다.
First chance error calling into ACME server, retrying with new nonce...
[test.suzume.dev] Authorizing...
[test.suzume.dev] Authorizing using dns-01 validation (Manual)
Domain: test.suzume.dev
Record: _acme-challenge.test.suzume.dev
Type: TXT
Content: "v1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Note: Some DNS managers add quotes automatically. A single set
is needed.
Please press <Enter> after you've created and verified the record <DNS に上記レコードを追加して ENTER>
도메인의 모든 확인이 완료되면 TXT 레코드를 삭제해야 하므로
[test.suzume.dev] Preliminary validation succeeded
[test.suzume.dev] Preliminary validation succeeded
[test.suzume.dev] Authorization result: valid
Domain: test.suzume.dev
Record: _acme-challenge.test.suzume.dev
Type: TXT
Content: "v1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Please press <Enter> after you've deleted the record <DNS から上記レコードを削除して ENTER>
증명서를 발행하다.마지막 질문이 어떻게 될지는 모르니까 일단 얘기하지 말자
Requesting certificate test.suzume.dev
Store with CertificateStore...
Installing certificate in the certificate store
Adding certificate test.suzume.dev @ 2021/5/10 14:10:08 to store My
Installing with None...
Adding Task Scheduler entry with the following settings
- Name win-acme renew (acme-v02.api.letsencrypt.org)
- Path C:\Apps\win-acme
- Command wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"
- Start at 09:00:00
- Random delay 02:00:00
- Time limit 02:00:00
Do you want to specify the user the task will run as? (y/n*) - n <ENTER>
Adding renewal for test.suzume.dev
Next renewal scheduled at 2021/7/4 14:08:35
Certificate test.suzume.dev created
웹 서버에 설정
아파치의 경우
<VirtualHost *:443>
ServerName test.suzume.dev
SSLEngine on
SSLProtocol +TLSv1.2
SSLCertificateFile C:/path/to/certs/test.suzume.dev/test.suzume.dev-crt.pem
SSLCertificateKeyFile C:/path/to/certs/test.suzume.dev/test.suzume.dev-key.pem
SSLCertificateChainFile C:/path/to/certs/test.suzume.dev/test.suzume.dev-chain.pem
# ...
</VirtualHost>
Nginx의 경우
server {
listen 443 ssl;
server_name test.suzume.dev;
ssl_certificate C:/path/to/certs/test.suzume.dev/test.suzume.dev-crt.pem;
ssl_certificate_key C:/path/to/certs/test.suzume.dev/test.suzume.dev-key.pem;
# ...
}
다른 방법: WSL에서 certbot 사용
맥OS의certbot에서 이전과 같은 내용을 시도해 보았는데 선택한 항목이 적고 간단해서 Windows도certbot으로 해 보기로 했습니다.
certbot 설치
WSL이 운영하는 우분투 18.04에 장착할 수 있는certbot은 오래(2018년 9월 발행)됐지만, 증명서 발행에는 문제가 없었다.
% sudo apt install certbot
% certbot --version
certbot 0.27.0
PowerShell 설정
WSL을 하나하나 전환하는 것은 번거롭기 때문에 PowerShell에서부터certbot을 사용하도록 설정합니다.
먼저 WSL에서certbot의 작업 디렉토리를 준비합니다.certbot을 시작하려면 루트 권한이 필요하지만 WSL sudo에서 불안해하기 때문에 이렇게 합니다.괜찮으면 안 해도 돼.
% mkdir -p ~/etc/letsencrypt
% cp /etc/letsencrypt/cli.ini ~/etc/letsencrypt
% mkdir -p ~/var/lib/letsencrypt
% mkdir -p ~/var/log/letsencrypt
다음은 PowerShell의 프로필$Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
에서certbot을 사용하는 설정에 대한 설명입니다.# certbot では Windows ファイルシステムのパスを指定することはないが、
# 共通で使用しているので書いておく
function Convert-Windows-Path-To-WSL {
$args | % {
if ($_ -is [string]) {
# C ドライブ以外も必要であれば追記する
return $_.Replace('\', '/').Replace('C:/', '/mnt/c/')
} else {
return $_
}
}
}
# バージョンやヘルプを見るための alias
function certbot {
wsl certbot $(Convert-Windows-Path-To-WSL @args)
}
# certbot-create domain.example.com を実行するだけでいいがにしてくれる
function certbot-create {
[CmdletBinding()]
param (
[string]$domain
)
wsl certbot certonly `
--manual `
--domain $domain `
--preferred-challenges dns `
--work-dir ~/var/lib/letsencrypt `
--logs-dir ~/var/log/letsencrypt `
--config-dir ~/etc/letsencrypt
# できあがった証明書を Windows ファイルシステムにコピーする。
# 書きやすいので fd を使ったが、なければ find を使う
wsl fd $domain ~/etc/letsencrypt/live `
--type d `
--exec cp -RL '{}' /mnt/c/Server/certs/
}
Reference
이 문제에 관하여(Windows 10의 로컬 개발 환경에서 인증서 발행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/21f/articles/letsencrypt-dev-windows텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)