
Signing HTTP Messages draft-ietf-httpbis-message-signatures-01 초안을 구현하는 Burp Suite 확장 프로그램입니다.
HTTPSignatures Burp Suite 확장 프로그램HTTPSignatures는 Signing HTTP Messages draft-ietf-httpbis-message-signatures-01 사양 초안 문서를 구현하는 Burp Suite 확장 프로그램입니다.
이를 통해 Burp Suite 사용자는 HTTP Signatures가 필요한 애플리케이션을 원활하게 테스트할 수 있습니다.
rsa-sha256 알고리즘(SHA-256 [RFC6234]을 사용하는 RSASSA-PKCS1-v1_5 [RFC8017])을 지원하고, 다이제스트 헤더에는 SHA-256을 지원합니다.최신 JAR 릴리스 파일을 다운로드하여 Burp Suite의 Extender 탭 / Extensions / Add를 통해 추가합니다.
Header Name, keyId, Private key file name and path를 설정해야 합니다. 자세한 설명은 아래를 참조하세요.Header Name을 포함하는 각 요청에 대해 새 서명을 생성합니다.HTTPSignatures가 올바르게 구성되면, Burp Suite 확장 프로그램은 Burp Proxy, Repeater, Intruder 및 Scanner를 통해 전송되는 모든 HTTP 요청에 대해 Header Name 설정에 구성된 HTTP 헤더 값(예: Signature)을 새 서명으로 대체합니다.

Burp Suite 확장 프로그램은 사용하기 전에 구성해야 합니다.
HTTPSignatures 구성은 로드된 후 Burp 메뉴에서 찾을 수 있습니다(보통 Help 메뉴의 오른쪽에 위치).
확장 프로그램이 작동하려면 Header Name, keyId, Private key file name and path를 올바르게 구성해야 합니다.
나머지 설정은 선택적으로 조정할 수 있습니다.
헤더 이름: (샘플 값: Authorization, Signature): 서명이 포함된 HTTP 요청 헤더의 이름입니다.
IETF 초안은 Signature 헤더 이름을 사용합니다. Oracle Cloud(OCI)는 Authorization 헤더 이름을 사용합니다.
keyId: keyId 매개변수는 검증자가 서명의 검증 키를 식별 및/또는 획득하는 데 사용하는 US-ASCII 문자열입니다.
샘플 값은 (ActivityPub의 경우) https://mastodon.example.com/users/myUser 또는 OCI의 경우 ocid1.tenancy.oc1.../ocid1.user.oc1.../{fingerprint}와 같을 수 있습니다.
개인 키 파일 이름 및 경로: 개인 키가 포함된 전체 경로와 파일 이름입니다(예: /home/${USER}/private_key.pem).
다이제스트 헤더 이름: 다이제스트가 포함된 헤더의 이름입니다. OCI의 경우 x-content-sha256, 대부분의 다른 구현에서는 digest여야 합니다.
서명할 헤더 이름: GET: GET 요청에 포함할 헤더 이름입니다(예: date (request-target) host).
값은 요청 메서드와 요청 URI의 경로 및 쿼리로 구성된 특수 식별자입니다(예: ).
HTTPSignatures 구성에서는 탭에서 여러 프로필을 구성할 수 있습니다.
... 탭을 클릭하여 새 탭을 만듭니다.
탭을 두 번 클릭하여 탭 이름을 지정할 수 있습니다.
탭을 저장하려면 "Save" 버튼을 클릭합니다.
탭을 활성 프로필로 표시하려면 "Use this profile" 버튼을 클릭합니다.
활성 탭(프로필)은 빨간색 글꼴과 테두리로 표시됩니다.
전역 구성 섹션에는 모든 프로필에 적용되는 설정이 포함되어 있습니다.
다음 Burp Suite 도구에서 확장 프로그램 활성화: 확장 프로그램은 다음 Burp Suite 도구에서 활성화하거나 비활성화할 수 있습니다.
프록시는 기본적으로 비활성화되어 있습니다. 다른 도구는 기본적으로 활성화되어 있습니다. 프록시 도구는 일반적으로 인터셉트 기능을 사용할 때만 활성화해야 합니다. 확장 프로그램은 비활성화된 경우 서명을 업데이트하지 않습니다.
디버그 로그 활성화: 이 확인란을 활성화하면 디버그 로그가 표준 출력에 출력됩니다. 출력은 Burp Suite의 Extender -> Extensions에서 Signing HTTP Messages 확장 프로그램을 선택하여 구성할 수 있습니다. Output 탭에서 표준 출력이 표시될 위치를 선택할 수 있습니다. 기본값은 Shown in UI이며, 이 경우 출력이 Burp Suite 내에 표시됩니다.
ActivityPub는 서버 간 인증 및 권한 부여를 위해 HTTP Signatures를 사용합니다.
Signaturehttps://mastodon.online/users/viktor.
curl을 사용하여 키를 검색할 수 있습니다: curl https://mastodon.online/users/viktor -H 'Accept: application/activity+json'|jq/home/user/private_key.pemdigestdate (request-target) hostdate (request-target) hostdate (request-target) hostdate (request-target) host content-length content-type digestdate (request-target) host content-length content-type digest모든 Oracle Cloud Infrastructure(OCI) API 요청에는 HTTP Signatures가 필요합니다. 이 구현은 일부 수정 사항이 적용된 초안 사양을 기반으로 합니다.
Authorization<TENANCY OCID>/<USER OCID>/<KEY FINGERPRINT>, 예: ocid1.tenancy.oc1..<unique_ID>/ocid1.user.oc1..<unique_ID>/<key_fingerprint>/home/user/private_key.pemx-content-sha256date (request-target) hostdate (request-target) hostdate (request-target) hostdate (request-target) host content-length content-type x-content-sha256date (request-target) host content-length content-type x-content-sha256trueHTTPSignatures 폴더를 Open or Import 합니다.out/artifacts/HTTPSignatures_jar/HTTPSignatures.jar에 생성됩니다.mvn package assembly:single 명령으로 프로젝트를 컴파일하고 JAR 파일을 생성합니다.target/HTTPSignatures-1.0-SNAPSHOT-jar-with-dependencies.jar에 생성됩니다.Java 프로젝트를 빌드하려면 세 가지 의존성이 필요합니다:
(request-target)get /foo?param=value서명할 헤더 이름: HEAD: HEAD 요청에 포함할 헤더 이름입니다(예: date (request-target) host).
서명할 헤더 이름: DELETE: DELETE 요청에 포함할 헤더 이름입니다(예: date (request-target) host).
서명할 헤더 이름: PUT: PUT 요청에 포함할 헤더 이름입니다(예: date (request-target) host content-length content-type digest).
서명할 헤더 이름: POST: POST 요청에 포함할 헤더 이름입니다(예: date (request-target) host content-length content-type digest).
서명에 쿼리 매개변수 포함: 이 불리언 값은 쿼리 매개변수(예: ?param=value)를 서명에 포함할지 여부를 지정합니다.
초안 표준에서는 쿼리 매개변수가 (request-target) 식별자의 일부라고 명시하지만, 모든 구현이 쿼리 매개변수를 포함하는 것은 아닙니다.
기본값은 true입니다.
서명에 포트 포함: 일부 구현에서는 포트를 host 헤더에 포함하지 않습니다(예: localhost:8080).
이 설정은 false로 설정하면 host 헤더 값에서 포트를 제거할 수 있습니다.
기본값은 true입니다.
truetruetrue