프로그램 코드를 저장하는 프로그램입니다. '코드 저장소에 프로젝트를 저장하는 방법'에 대한 한 가지 의견입니다. 명령 옵션 나열

아래에서는 리포지토리 서비스가 데이터를 저장하는 위치, 지원되는 버전 제어 시스템, 데스크톱 애플리케이션 보유 여부 및 이를 설치할 수 있는 운영 체제를 확인할 수 있습니다.

# 회사 년도 버전 관리 데이터 저장고 가격(월), $
1
0
2008 힘내, SVN 7–210
2
0
2008 힘내, 머큐리얼 클라우드 / 자체 서버 10–200
2016
3
0
2011 힘내 클라우드 / 자체 서버 4-99
4
0
2007 힘내, SVN 구름 15–200

응답자의 데이터를 처리할 때 코드를 저장하기 위한 다른 리포지토리 서비스 중에서 Amazon Cloud Drive, Codebase, Gitolite, Heroku, Microsoft Azure, RhodeCode, Subversion, Team Foundation Server가 고려되었습니다.

등급에 대하여

코드 저장을 위한 저장소 서비스 평가는 Tagline에서 세 번째로 수행되었으며 2016년 4월부터 2018년 5월까지 디지털 기업의 기술 관리자 540명 이상을 대상으로 실시한 설문 조사를 기반으로 합니다. 응답자들은 "코드를 저장하기 위해 어떤 저장소 서비스를 사용합니까?"라는 질문에 대한 하나 이상의 답변 옵션을 선택하라는 요청을 받았습니다.

이러한 역학관계는 2014년 8월부터 2016년 4월까지 Tagline에서 얻은 데이터와 비교하여 제시됩니다.

Git 버전 제어 시스템을 기반으로 하는 프로젝트 호스팅을 위한 가장 유명한 웹 서비스인 GitHub는 상당히 큰 차이(77%)로 계속해서 순위를 주도하고 있습니다. 오픈 소스 프로젝트의 경우 서비스는 무료이며, 개인 저장소가 있는 개인 프로젝트의 경우 몇 가지 가격 계획이 있습니다.
- 개인용(팀 사용을 위한 개인 저장소 생성, 월 $7부터)
- 소규모 조직의 경우(액세스 설정 관리가 가능해짐, 월 $25부터)
- 대기업용(연간 $2520부터 자체 서버나 자체 클라우드에 설치할 수 있음).
GitHub는 개발자를 위한 소셜 네트워크라고도 불립니다. 여기에는 팔로우, 댓글 달기, 즐겨찾기 등 관련 요소가 모두 포함되어 있습니다. 서비스 활동은 이력서 역할을 할 수도 있습니다.

2위는 Bitbucket으로 응답자의 48%가 이에 투표했습니다. 개인 저장소를 무제한으로 생성할 수 있지만 사용자는 5명으로 제한됩니다. 대규모 팀의 경우 $10부터 시작하는 유료 버전이 있습니다. Bitbucket은 Atlassian의 제품 중 하나이므로 이 회사의 다른 솔루션(JIRA, Hipchat, Bamboo)과 통합될 수 있습니다.

GitLab(14%)은 기능면에서 GitHub와 유사하지만 자체 서버에 무료로 설치하고 필요에 따라 사용자 정의할 수 있습니다. 또한 SaaS로도 존재합니다. 등록 후 공동 작업을 위한 비공개 저장소를 무료로 생성할 수 있습니다. 유료 기능 - 대기업용 버전(사용자당 연간 48달러부터).

마지막으로 전체 응답자의 1%인 빈스토크가 4위를 차지했습니다. 경쟁사와 달리 2주 동안만 무료 버전만 제공하며, 유료 요금제 선택은 사용자 수, 리포지토리 및 할당된 저장 공간에 따라 달라집니다. 유료 회사에 대한 관세(50~200달러)에는 우선 지원 또는 여러 서버에 대한 동시 배포와 같은 다양한 추가 기능도 포함됩니다.

모든 프로그래머는 조만간 자신의 코드를 어딘가에 저장해야 할 때 문제에 직면하게 되지만, 어떤 이유로든 자신의 컴퓨터에서는 이를 수행하는 것이 불가능합니다. 아니면 수천 킬로미터 떨어져 있는 다른 프로그래머나 고객에게 코드를 보여주어야 합니다. 이는 프리랜서에게 매우 시급한 문제이며 사이트에서는 저장을 위해 코드를 "드롭"할 수 있는 위치를 알려 주기로 결정했습니다.

네트워크에는 그러한 서비스가 수십 개나 있습니다. 최적의 기능 세트를 갖춘 몇 가지 무료 기능을 알려 드리겠습니다.

이는 단순한 코드 저장 서비스 그 이상입니다. 이를 통해 코드를 컴파일하고 오류를 찾아 수정할 수 있습니다. 컴파일된 코드는 네트워크에서 실행될 수 있습니다. Ideone은 약 40개의 프로그래밍 언어를 지원합니다. 그러나 모든 장점에도 불구하고 서비스에는 한 가지 단점이 있습니다. 즉, 비밀번호로 코드를 암호화할 수 없다는 것입니다.

텍스트나 코드를 배치하는 것뿐만 아니라 각 구절의 "만료일"을 표시하고, 개별 구절을 보관하고, 줄을 강조 표시하고, 하위 도메인을 할당하는 것도 가능합니다. 하지만 여기서도 비밀번호를 사용하여 코드를 숨길 수는 없습니다.

여기에서 쉽게 코드를 저장한 다음 친구들과 링크를 공유할 수 있습니다. 한 사람만 액세스할 수 있도록 하려면 코드를 비밀번호로 보호하는 것도 가능합니다. 이미 생성된 발췌문을 보관하고 순서를 설정할 수 있습니다.

HTML 페이지 및 마크업을 저장하기 위해 특별히 설계되었습니다. 여기에 간단한 텍스트를 저장할 수도 있습니다. HTML 페이지에 대한 익명 웹 호스팅으로도 사용할 수 있습니다.

이것은 가장 널리 사용되는 프로그래밍 언어 13개를 지원하는 온라인 컴파일러입니다. 여기에서는 코드를 저장할 수 있을 뿐만 아니라 네트워크에서 실행할 수도 있습니다. 한 가지 단점은 비밀번호로 코드를 보호할 수 없다는 것입니다.

코드 저장을 위한 매우 가볍고 간단한 서비스입니다. Pastebin의 유용한 기능 중에는 코드 강조 표시 및 비밀번호 사용이 있습니다. 이 서비스는 각각의 새로운 구절에 자동으로 버전을 할당합니다.

Dpaste는 몇 가지 언어만 지원하지만 온라인에 코드를 게시하고 저장하는 가장 간단한 도구 중 하나입니다. 개별 코드 조각과 아카이브 발췌 부분을 강조 표시할 수 있습니다.

이것은 가장 강력하고 기능적인 코드 저장 서비스 중 하나입니다. 제공되는 기능 중에는 코드의 비밀번호 보호, 탭 추가, 만료 날짜 설정 및 개별 코드 조각 강조 표시 기능이 있습니다.



Pastebin.ca

코드를 게시하고, 공유하고, 비밀번호로 보호하고, 만료 날짜를 설정하고, 발췌 내용을 보관하고, 댓글을 남길 수도 있습니다. 간단하고 기능적이며 매우 편리한 서비스입니다.

이것이 코드 저장을 위한 모든 서비스는 아니지만 등록이나 결제가 필요하지 않은 가장 편리하고 간단하며 기능적인 서비스를 수집하려고 노력했습니다. 건강을 위해 즐겨보세요!

이전에 네트워킹 용어 "pastebins"를 접한 적이 있을 것입니다. 이는 귀하가 작성한 유용한 코드 조각을 게시하고 다른 사람들과 공유할 수 있는 웹 서비스입니다. 이러한 서비스는 IRC, 소셜 네트워크, 블로그 등의 사용자가 자주 사용합니다. 사용자는 페이스트빈과 같은 서비스에 소스 코드를 게시한 다음 코드에 대한 링크를 다른 사람에게 보낼 수 있습니다.

인터넷에서 이러한 웹 서비스를 많이 찾을 수 있습니다. 대부분은 표준 기능 세트를 갖추고 있습니다. 그러나 일부 개발자는 독창성으로 자신을 분명히 구별했습니다. 우리는 귀하를 위해 최고의 서비스를 선택했으며 귀하는 귀하의 모든 요구 사항을 완벽하게 충족할 수 있는 서비스를 찾으실 수 있을 것입니다.

02.
Ideone은 단순한 Pastebin 서비스가 아니라 온라인 컴파일러 및 디버거이기도 합니다. 이를 통해 웹에서 코드를 컴파일하고 실행할 수 있습니다. 40개 이상의 프로그래밍 언어가 지원됩니다. 또한 이미 생성한 구절을 보관하거나 해당 순서를 강조 표시할 수 있습니다. 그러나 서비스가 코드 암호화 기능을 제공하지 않는다는 점은 주목할 가치가 있습니다.


03.
Pastebin.com을 사용하면 다른 사람들과 추가로 공유하기 위해 전용 서버에 텍스트와 코드를 호스팅할 수 있습니다. 또한 코드의 만료 날짜를 지정하고, 구절을 보관하고, 코드의 특정 부분을 강조 표시하고, 하위 도메인을 자동으로 할당할 수 있습니다. 코드를 암호화할 방법도 없습니다.


04.
미스틱 페이스트(Mystic Paste)는 소스코드를 무료로 제공하는 페이스트빈 서비스입니다. 이 서비스를 사용하면 코드 조각을 쉽게 게시하고 사람들과 공유할 수 있습니다. 이 서비스는 또한 다양한 추가 플러그인을 제공합니다.


05.
TinyPaste를 사용하면 텍스트와 코드를 쉽게 게시할 수 있으며, 이를 통해 수익을 창출할 수도 있습니다. 시스템은 귀하의 카탈로그를 방문할 때마다 보너스를 지급합니다. 비밀번호로 코드를 암호화하고 개별 조각을 선택하여 보관하고 하위 도메인을 할당할 수 있습니다. 코드를 바로 컴파일할 수도 있습니다. TinyPaste는 API와 일부 타사 도구를 제공합니다.


06.
HTML 붙여넣기를 사용하면 HTML 코드, 일반 텍스트 및 마크업을 붙여넣을 수 있습니다. 이 서비스는 HTML 페이지 호스팅을 위한 익명 웹 호스팅으로 사용될 수 있습니다. 이 서비스는 HTML 코드용으로 특별히 설계되었습니다.


07.
Codepad는 코드를 실행하고 친구들과 공유할 수 있는 온라인 컴파일러입니다. 이 도구를 사용하면 코드의 개별 섹션을 강조 표시할 수 있을 뿐만 아니라 별도의 비공개 요소를 만들 수도 있습니다. 그러나 비밀번호 보호는 지원되지 않습니다. 현재 이 애플리케이션은 13개의 인기 있는 프로그래밍 언어를 지원합니다.


08.
MathBin을 사용하면 수학 방정식을 쉽게 배치할 수 있습니다. 이 서비스는 LaTeX 형식을 사용하여 방정식을 이미지로 생성합니다. 이 도구는 해결하고 논의해야 할 수학적, 물리적 문제의 일부를 게시하는 데 적합합니다.


09.
Snipplr는 자신의 코드 조각을 게시하고 공유할 수 있는 공개 코드 조각 저장소입니다. 이 서비스를 사용하면 개별 코드 조각을 강조 표시하고 코드를 보관할 수 있습니다. 서비스를 이용하시려면 등록을 하셔야 합니다.


10.
코드 업로드는 자체 소스 코드를 제공하는 무료 페이스트빈 서비스입니다. 이 서비스를 사용하면 코드 조각을 게시하고 다른 사람과 공유할 수 있습니다. 또한 이 서비스를 사용하면 구절을 보관하고 비밀번호로 보호하며 개별 코드 조각을 강조 표시할 수 있습니다.

11.
PASTE를 사용하면 코드를 게시하고 텍스트를 디버깅할 수도 있습니다. 만료일을 설정하고 비밀번호로 파일을 잠글 수 있습니다.


12.
Gist는 코드 조각을 게시하는 쉬운 방법입니다. 이 서비스는 개별 코드 조각 강조 표시, 비밀번호 설정 등과 같은 다양한 기능을 제공합니다. 모든 구절의 버전이 자동으로 관리됩니다.


13.
Codetrunk는 자체 소스 코드도 제공하는 코드 조각을 게시하기 위한 도구입니다. 이 서비스를 사용하면 개별 코드 조각을 강조 표시하고 보관하는 등의 작업을 수행할 수 있습니다. 이 서비스는 각 코드에 대해 하위 도메인을 자동으로 할당합니다.


14.
PasteSite를 사용하면 강조 표시할 개별 코드 조각을 먼저 선택하여 사이트를 통해 볼 수 있는 코드 조각을 게시할 수 있습니다. PasteSite를 사용하면 코드 조각을 암호로 보호할 수 있습니다. 문서를 쉽게 삭제할 수도 있습니다.


15.
pzt.me는 여러 방향으로 작동하는 Pastebin 서비스입니다. 다양한 흥미로운 내용에 대한 텍스트, 이미지, 비디오 및 링크를 온라인으로 공유할 수 있습니다. YouTube, DailyMotion, Vimeo 등을 포함한 모든 인기 비디오 사이트의 비디오를 삽입할 수 있습니다. 이 서비스를 사용하여 링크를 단축할 수도 있습니다.

16.
Snipt를 사용하면 트위터와 같은 마이크로 블로깅 사이트에 코드 조각을 쉽게 게시할 수 있습니다. 이 서비스에는 개별 조각 강조 표시, 보관 및 비밀번호 설정과 같은 기능이 포함되어 있습니다. 트위터 로그인 자격 증명을 사용하여 자신만의 코드 조각을 얻을 수 있습니다.


17.
Clippy는 비밀번호 보호, 개별 조각 강조 표시, 스팸 방지 및 하위 도메인 할당과 같은 다양한 기능을 제공하는 무료 서비스입니다. 현재 이 서비스는 50개 이상의 프로그래밍 언어를 지원합니다.

18.
Pastebin 유형 서비스의 가장 간단한 구현입니다. 이 서비스는 사용하기 매우 쉽습니다. 인터페이스는 텍스트 입력 필드와 삽입 버튼으로 구성됩니다.


19.
Dpaste는 코드 조각을 게시하는 도구입니다. 원래 Django 프로그래머가 #django IRC 채널에서 사용하기 위해 개발했습니다. 개별 텍스트 조각과 아카이브 구절을 강조 표시할 수 있습니다. 그러나 몇 가지 프로그래밍 언어만 지원합니다.


20.
Slexy는 강력하고 유연한 페이스트빈 형태의 서비스입니다. 붙여넣은 텍스트 내에 탭을 추가하고, 설정을 저장하고, CLI/터미널을 통해 붙여넣을 수 있습니다. 또한 만료를 설정하고, 개별 코드 조각을 강조 표시하고, 비밀번호로 코드를 보호하는 기능도 제공합니다.


21.
Paste-It은 사용하기 쉬운 페이스트빈 서비스입니다. 이 서비스는 비공개 발췌문 생성, 만료 날짜 및 개별 단편 강조 표시 기능을 제공합니다. 이 서비스는 또한 더 빠르고 편리한 복사를 위해 Firefox 및 Chrome용 특수 플러그인을 제공합니다.
Pastebin.ca
Pastebin.ca는 Pastebin 도구입니다. 이를 통해 코드를 게시하고 다른 사람들과 공유할 수 있습니다. 이 서비스는 개별 코드 조각 강조, 보관, 비밀번호 보호 및 하위 도메인 할당 기능을 제공합니다. 또한 만료일을 설정하고 구절에 댓글을 남길 수도 있습니다.

25.
Pastie는 이러한 유형의 서비스에 일반적인 모든 기본 기능을 지원하는 Pastie 범주의 또 다른 서비스입니다. 이 서비스는 널리 사용되는 모든 프로그래밍 언어를 지원합니다.

애플리케이션의 데이터를 보호하는 것이 중요하며 민감한 정보를 보호하는 것이 가장 중요합니다. 항상 정보를 보호하는 가장 일반적인 방법 중 하나는 데이터 암호화입니다. 암호화, 대칭 및 비대칭 암호화, 키 및 인증서는 이 작업과 직접적인 관련이 있습니다. 정보를 보호하는 데 사용되는 키와 인증서도 안전하게 보호되어야 합니다. 이러한 목적으로 사용됩니다 키 저장소- 인증서 및 키 저장.

키 저장소암호화, 인증 및 HTTPS 연결 설정을 위해 Java 애플리케이션에서 사용하는 비밀 데이터의 특수 저장소입니다. 따라서 SSL(Secure Sockets Layer) 연결을 설정하는 클라이언트와 서버를 인증하려면 개인 키와 인증서가 필요합니다. 단방향 인증을 사용하는 경우 키 저장소서버 측에서만 사용됩니다. 양방향 인증에서는 클라이언트와 서버가 인증서를 교환합니다. 따라서 서버와 클라이언트 모두 키 저장소키 쌍 개인/공용 + 인증서를 사용합니다. 다시 말해서 키 저장소키 소유자(클라이언트 또는 서버)를 식별하는 데 사용되는 키와 인증서를 저장하는 데 사용됩니다.

Java는 다양한 저장 형식을 지원합니다. 키 저장소 :

키 저장소의 각 항목에는 고유한 별칭이 있습니다. 표준 구현에서는 저장소의 각 키가 비밀번호로 보호되며 전체 저장소는 별도의 비밀번호로 보호될 수 있습니다.

Java 응용 프로그램에 대한 신뢰할 수 있는 CA 인증서(인증 기관)의 표준 저장소는 디렉터리에 있습니다. jre/lib/보안/cacerts(비밀번호 - 변경).

저장소의 정보는 키 레코드(개인/공개 키 쌍)와 신뢰할 수 있는 인증서라는 두 가지 범주로 나눌 수 있습니다. 암호화 목적으로 사용되는 키 레코드에는 엔터티의 ID와 개인 키가 포함됩니다. 신뢰할 수 있는 인증서에는 엔터티의 ID와 공개 키가 포함되어 있습니다. 개인 키가 필요한 경우에는 신뢰할 수 있는 인증서 항목을 사용할 수 없습니다.

인증서에서 키 레코드를 분리하려면 서로 다른 저장소를 사용하는 것이 좋습니다. 하나는 자체 키용이고 다른 하나는 인증 기관(CA) 인증서를 포함한 신뢰할 수 있는 인증서용입니다. 이 접근 방식을 사용하면 자체 인증서와 해당 개인 키 및 신뢰할 수 있는 인증서를 분리할 수 있습니다. 또한 액세스가 제한된 별도의 키 저장소에서 개인 키에 대한 더 높은 보호를 제공하고 신뢰할 수 있는 인증서를 더 자유롭게 사용할 수 있습니다.

Keytool 유틸리티

키 쌍(개인/공개), 인증서 및 키 저장소를 관리하기 위해 Java에는 유틸리티가 포함되어 있습니다. 키툴, bin 디렉터리에 있습니다. 시작을 위해 키툴명령줄을 사용할 수 있습니다. 유틸리티 옵션을 사용하면 다양한 작업을 수행하고 특정 정보를 얻을 수 있습니다. 따라서 유틸리티에 대한 정보를 얻으려면 간단히 다음 명령을 실행하면 됩니다. 키툴옵션 없음:

C:\Program Files\Java\jre1.8.0_121\bin>keytool 키 및 인증서 관리 도구 명령: -certreq 인증서 요청 생성 -changealias 항목 별칭 변경 -delete 항목 삭제 -exportcert 인증서 내보내기 -genkeypair 키 쌍 -genseckey 비밀 키 생성 -gencert 인증서 요청에서 인증서 생성 -importcert 인증서 또는 인증서 체인 가져오기 -importpass 비밀번호 가져오기 -importkeystore 다른 키 저장소에서 하나 또는 모든 항목 가져오기 -keypasswd 항목의 키 비밀번호 변경 - list 키 저장소의 항목 나열 -printcert 인증서 내용 인쇄 -printcertreq 인증서 요청 내용 인쇄 -printcrl CRL 파일 내용 인쇄 -storepasswd 키 저장소의 저장소 비밀번호 변경 "keytool -command_name -help"를 사용하여 command_name 사용법

명령에 대한 추가 도움말을 얻으려면 해당 이름과 마법 단어 help를 지정해야 합니다. 옵션 앞에 하이픈 "-"을 잊지 마세요:

C:\Program Files\Java\jre1.8.0_121\bin>keytool -certreq -help keytool -certreq ... 인증서 요청을 생성합니다. 옵션: -alias 처리할 항목의 별칭 이름 -sigalg 서명 알고리즘 이름 -파일 출력 파일 이름 -keypass 키 비밀번호 -keystore 키 저장소 이름 -dname 고유 이름 -storepass 키 저장소 비밀번호 -storetype 키 저장소 유형 . . . -providerarg 공급자 인수 -providerpath 공급자 클래스 경로 -v 자세한 출력 - 보호된 메커니즘을 통해 보호된 비밀번호 사용 가능한 모든 명령에 "keytool -help"를 사용하세요.

자체 서명된 인증서 만들기

자체 서명된 인증서를 생성하려면 -validity 옵션에 지정된 인증서의 유효 기간과 함께 -genkey 명령도 사용해야 합니다. 다음 명령은 지정된 키 저장소/파일(keystore.jks)에 지정된 별칭(상위)을 사용하여 365일 동안 유효한 2048비트 RSA 키 쌍을 생성합니다. 저장소의 개인 키는 비밀번호로 "닫혀" 있고, 공개 키는 자체 서명된 인증서에 "래핑"되어 있습니다..

Keytool -genkey -alias parent -keyalg RSA -validity 365 \ -keystore keystore.jks

지정된 키 저장소(keystore.jks)가 존재하지 않으면 keytool이 이를 생성합니다. 명령을 실행할 때 keytool은 몇 가지 필요한 데이터(스토리지 비밀번호, 고유 이름그리고 개인 키 비밀번호입니다. 많은 매개변수가 기본값과 함께 사용됩니다. 예를 들어 별칭은 mykey, 저장소는 사용자 홈 디렉터리(HOMEPATH)의 .keystore, 암호화 알고리즘은 SHA1withDSA 등입니다.

고유한 이름

인증서는 X.509 형식으로 생성됩니다. 이 형식에서 소유자 식별자는 다음과 같습니다. 고유한 이름또는 간단히 X.500 형식의 DN입니다. LDAP 프로토콜이나 SNMP에서는 동일한 개체 식별 형식이 사용됩니다. 고유한 이름쉼표로 구분된 속성으로 지정됩니다.

  • CN - 일반 이름(소유자 이름)
  • OU - 조직 단위 또는 부서/부서(부서/부서)
  • O - 조직 이름
  • L - 지역 또는 도시(도시/위치)
  • ST - 주 또는 지방
  • C - 국가, 문자 2개(국가).

일부 속성이 누락되었을 수 있습니다. 이 경우 Unknown 값이 할당됩니다.

인증서의 중요한 속성 중 하나는 대체 이름입니다. SAN(주체대체이름). 자체 서명된 인증서에 SAN을 추가하는 방법에 대한 세부 정보와 예는 Tomcat 서버 구성 페이지에 제공됩니다.

인증서 매개변수는 명령 옵션으로 지정할 수 있습니다. 따라서 다음 버전의 예에서는 회사에 대한 정보, 별칭 이름, 저장소 유형 및 위치, 유효 기간, 키 생성 알고리즘, 키 크기, 저장소 비밀번호 및 키에 대해 지정되었습니다.

C:\Program Files\Java\jdk1.8.., L=모스크바, C=RF" \ -alias parent -storetype jks -keystore keystore.jks \ -validity 365 -keyalg RSA -keysize 2048 \ -storepass mystorepass -keypass mykeypass CN=사이트, OU=개발자, O=IT Systems Inc., L=모스크바, C=RF에 대해 365일 동안 유효한 2개의 048비트 RSA 키 쌍 및 자체 서명 인증서(SHA256withRSA) 생성

새 저장소는 keytool이 있는 동일한 디렉터리에 배치되었습니다.

키 쌍 생성

키 페어를 생성하려면 "-genkeypair" 명령을 사용해야 합니다. 다음 명령은 이전에 생성한 인증서가 있는 keystore.jks 저장소에 키 쌍 "keypair"를 생성합니다.

C:\Program Files\Java\jdk1.8.0_121\bin> \ keytool -alias keypair -genkeypair -keystore keystore.jks \ -dname "CN=site" 키 저장소 비밀번호 입력: 다음에 대한 키 비밀번호를 입력하세요. (키 저장소 비밀번호와 동일하면 RETURN):

인증서와 개인 키는 별칭 "keypair"로 식별되는 새 키 저장소 항목으로 저장됩니다. 공개 키는 X.509 형식(싱글톤 인증서 체인으로 저장되는 자체 서명 인증서)으로 래핑됩니다.

genkeypair 명령 옵션

  • [-storepass 스토어패스]
  • (-별칭 별칭)
  • (-storetype 저장소 유형)
  • (-키 저장소 키 저장소)
  • [-keypass keypass] - 개인 키를 보호하는 데 사용되는 비밀번호입니다.
  • [-dname dname] - 별칭과 연결되고 자체 서명된 인증서의 발급자 및 제목 필드로 사용되는 X.500 형식의 고유 이름을 지정합니다.
  • (-startdate 값)
  • (-keyalg keyalg) - 키 쌍을 생성하는 데 사용될 알고리즘을 지정합니다.
  • (-keysize keysize) - 생성될 각 키의 크기를 지정합니다.
  • (-sigalg sigalg) - 자체 서명된 인증서에 서명하는 데 사용해야 하는 알고리즘을 지정합니다. 알고리즘은 keyalg와 호환되어야 합니다.
  • (-내선 내선)*
  • (-유효성 valDays)
  • (-보호됨)
  • (-Jjava옵션)

저장소(아래)의 내용을 볼 때 작은 키 쌍 목록이 있도록 별칭 "keypair1" 및 "keypair2"를 사용하여 두 개의 키 쌍을 더 생성해 보겠습니다.

Keytool -alias keypair1 -genkeypair -keystore keystore..jks \ -dname "CN=site"

인증서 내보내기

인증서는 저장소에서 내보내어 "서명된" 프로그램 사용자에게 제공할 수 있습니다. 그러면 사용자는 신뢰할 수 있는 인증서 저장소에 인증서를 추가할 수 있습니다. 인증서를 내보내려면 "exportcert" 명령을 사용하십시오. 다음 예에서는 저장소에서 "parent.cer" 파일로 인증서를 검색합니다.

C:\Program Files\Java\jdk1.8.0_121\bin> \ keytool -exportcert -keystore keystore.jks \ -alias parent -file parent.cer 키 저장소 비밀번호 입력: 파일에 저장된 인증서

인증서 가져오기

인증서를 저장소로 가져오려면 먼저 인증서를 얻어야 합니다. 까다롭게 굴지 말고 신뢰 저장소 jre\lib\security\cacerts(저장 비밀번호 변경)에서 veriSignclass1g3ca 별칭을 사용하여 인증서를 추출하세요. 즉, 해당 저장소를 나타내는 인증서 내보내기 명령을 실행해 보겠습니다.

스토리지에서 인증서 내보내기 cacerts

C:\Program Files\Java\jdk1.8.0_121\bin> keytool -exportcert -alias veriSignclass1g3ca -keystore \ "C:\Program Files\Java\jdk1.7.0_67\jre\lib\security\cacerts" \ -file veriSignclass1g3ca .cer 키 저장소 비밀번호 입력: 인증서가 파일에 저장됨

저장소로 인증서 가져오기

인증서를 저장소로 가져오려면 keystore.jks"importcert" 명령을 사용해야 합니다. 옵션으로 "-trustcacerts"를 지정하면 인증서를 신뢰할 수 있는 인증서 저장소로 가져옵니다. jre\lib\security\cacerts에 있습니다. 가져오기 명령을 실행하면 keytool 유틸리티에서 스토리지 비밀번호를 입력하라는 메시지를 표시합니다.

C:\Program Files\Java\jdk1.8.0_121\bin>\keytool -importcert -keystore keystore.jks \ -file veriSignclass1g3ca.cer 키 저장소 비밀번호 입력: \Owner:\CN=VeriSign 클래스 1 공용 기본 인증 기관 - G3, \ OU="(c) 1999 VeriSign, Inc. - 승인된 용도로만 사용", \ OU=VeriSign Trust Network, \ O="VeriSign, Inc.", \ C=USIssuer: \ CN=VeriSign 클래스 1 공공 기본 인증 권한 - G3, \ OU="(c) 1999 VeriSign, Inc. - 승인된 용도로만 사용", \ OU=VeriSign Trust Network, \ O="VeriSign, Inc.", \ C=US \ 일련 번호: \ 유효함 시작: \ 10월 1일 금요일 04:00:00 MSD 1999 종료: 7월 17일 목요일 02:59:59 MSK 2036 \ 인증서 지문: \ MD5: B1:47:BC:18:57:D1:18:A0:78: 2D:EC:71:E8:2A:95:73\SHA1:20:42:85:DC:F7:EB:76:41:95:57:8E:13:6B:D4:B7:D1:E9: 8E:46:A5\SHA256: CB:B5:AF:18:5E:94:2A:24:02:F9:EA:CB:C0:ED:5B:B8:76:EE:A3:\C1:22 :36:23:D0:04:47:E4:F3:BA:55:4B:65 서명 알고리즘 이름: SHA1withRSA 버전: 1 \ 이 인증서를 신뢰하시겠습니까? : y 인증서가 키 저장소에 추가되었습니다.

저장용량 보기

저장소의 내용을 읽으려면 "-list" 명령을 사용해야 합니다. "-keystore" 옵션을 사용하여 저장소 경로를 지정할 수 있습니다. 기본적으로 "-list" 명령은 인증서의 SHA1 지문을 표시합니다. 다음 코드를 사용하면 인증서와 세 개의 키 쌍이 포함된 생성된 저장소의 콘텐츠를 볼 수 있습니다.

C:\Program Files\Java\jdk1.8.0_121\bin> \ keytool -list -keystore keystore.jks 키 저장소 비밀번호 입력: 키 저장소 유형: JKS 키 저장소 공급자: SUN 키 저장소에는 5개 항목 keypair2, 2018년 2월 14일, PrivateKeyEntry가 포함되어 있습니다. , 인증서 지문(SHA1): \ C4:02:BA:D7:24:6B:84:2F:CD:F9:81:16:5F:74:E0:31:7B:C0:19:B1 keypair1, 02 /14/2018 , PrivateKeyEntry, 인증서 지문(SHA1): \ AB:BA:92:77:44:BD:B0:65:EB:29:0C:F9:86:64:0F:81:B7:4A: 27:9A 키 쌍, 2018년 2월 14일, PrivateKeyEntry, 인증서 지문(SHA1): \ 8A:8B:21:83:1E:75:4F:C7:62:85:6A:31:84:45:AA: 16:2B:20: 06:1E 상위, 2018년 2월 13일, PrivateKeyEntry, 인증서 지문(SHA1): \ DB:8B:9D:9D:DF:5B:B3:82:0E:19:C6:A4: A4:3E:08:C0: AB:20:F9:85 mykey, 02/18/2018,trustedCertEntry, 인증서 지문(SHA1): \ 20:42:85:DC:F7:EB:76:41:95: 57:8E:13:6B:D4: B7:D1:E9:8E:46:A5

명령 옵션 나열

  • (-v | -rfc)
  • [-storepass 스토어패스]
  • (-별칭 별칭)
  • (-storetype 저장소 유형)
  • (-키 저장소 키 저장소)
  • (-providerName 공급자_이름)
  • (-providerClass 공급자_클래스_이름(-providerArg 공급자_arg))
  • (-보호됨) (-Jjava옵션)

저장소를 볼 때 "-v" 옵션을 사용하면 소유자, 시퀀스 번호 등을 포함한 추가 정보와 함께 인증서 정보가 표시됩니다. "-rfc" 옵션을 사용하면 인증서 내용이 인터넷 표준 RFC-1421에 따라 인쇄됩니다.

저장소 및 인증서 보기 예시

스크린샷은 키 저장소와 인증서를 보고 인증서 정보를 검색할 수 있는 CertificateReader의 예를 보여줍니다.

인증서 내부에는 한 쌍의 값이 저장됩니다. 고유한 이름. 한 DN은 인증서 소유자에 속하고 두 번째 DN은 인증서에 서명한 CA(인증 기관)의 ID를 지정합니다. 자체 서명된 인증서의 경우 이 두 DN은 모두 인증서 소유자를 가리킵니다.

예시 목록

예제 인터페이스는 Swing 라이브러리를 사용하여 만들어졌습니다. Swing은 이 기사의 주제가 아니므로 인터페이스 생성 방법은 예제 목록에 표시되지 않습니다. 필요한 경우 관심 있는 사람은 페이지 끝부분에 있는 예제의 소스 코드를 다운로드할 수 있습니다.

예제 목록에는 loadKeyStore, showCertificate라는 두 가지 메서드가 나와 있습니다. 첫 번째 방법을 사용하면 인증서 저장소를 선택할 수 있습니다. 두 번째 방법은 인증서를 읽고 해당 매개변수를 인터페이스에 표시합니다. 목록 후에는 생성된 인증서를 읽는 모습을 보여주는 스크린샷이 표시됩니다.

java.security.KeyStore 가져오기; import java.security.KeyStoreException; java.security.cert.Certificate 가져오기; java.security.cert.X509Certificate 가져오기; public class CertificateReader는 JFrame을 확장합니다( final String TERMIN = "인증서 %s 만료 날짜"; final String VALID = "valid" ; final String INVALID = "유효하지 않음" ; final String CREATER = "Issuer%s" ; final String NUMBER = " 일련 번호%s" ; final String START = "%s의 유효 기간 시작" ; final String END = "%s의 유효 기간 종료" ; final String OWNER = "%s의 소유자" ; final String ALGORITM = " %s"의 서명 알고리즘 ; 최종 문자열 SIGN = "인증서 서명%s" ; 최종 문자열 LF = "\n" ; 최종 문자열 LF_SPACE = " :\n " ; KeyStore keyStore = null ; lstAliases = null; JTextField txtFileName = null; JTextArea taCertificate = null; 최종 int LIST_size = 140 ; public CertificateReader() ( setTitle("인증서 저장소 보기"); setSize(600, 480); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setLayout(new BorderLayout()); getContentPane().add(createCtrl(), BorderLayout.SOUTH); getContentPane().add(createGUI(), BorderLayout.CENTER); setVisible(true); private JPanel createCtrl() ( . . . ) private JSplitPane createGUI() ( . . . ) void loadKeyStore() FileInputStream fis; // 인증서 저장소 선택 JFileChooser chooser = new JFileChooser(); if(chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) ( txtFileName.setText(chooser.getSelectedFile().getAbsolutePath()); try ( / / 인증서 저장소 읽기 keyStore = KeyStore.getInstance(KeyStore.getDefaultType()) fis = new FileInputStream(txtFileName.getText()); E = keyStore.aliases(); // 벡터 인증서 세트 구성 인증서 = 새 벡터 (); while (E.hasMoreElements()) certs.add((String)E.nextElement()); // 구성 요소에 인증서 배치 lstAliases.setListData(certs); 무효화(); ) catch (예외 e) ( JOptionPane.showMessageDialog(this, "인증서 저장소 읽기 오류:\n" + e); ) ) ) void showCertificate(최종 문자열 이름) ( 인증서 인증서 = null; try ( // 인증서 인증서 읽기 = keyStore.getCertificate(이름); X509Certificate xcert = (X509Certificate) cert; new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); String end = sdf.format(xcert.getNotAfter()); .format(xcert.getNotBefore()); .misc.BASE64Encoder() .encode(cert.getSignature()); 문자열 생성자 = xcert.getIssuerDN().getName(); ); .getSerialNumber()); String algo = xcert.getSigAlgName(); info = createLine(TERMIN, valid); info += createLine(CREATER, start); info += createLine(END , end); info += createLine(OWNER, 소유자); info += createLine(ALGORITM, algo); info += createLine(SIGN , 서명); taCertificate.setText(info); ) catch (KeyStoreException ex1) ( JOptionPane.showMessageDialog(this , "" + 별칭이 있는 저장소에서 인증서를 가져오는 동안 오류가 발생했습니다.<>"); ) ) protected String createLine(String templ, String text) ( return String.format(templ, LF_SPACE + text + LF); ) public static void main(String args) ( new CertificateReader(); ) )

참고: CertificateReader 클래스는 jar 파일 디지털 서명 페이지의 예로 사용됩니다.

예제 다운로드

페이지에 설명된 키 및 인증서 저장소를 보는 예는 다운로드할 수 있습니다(2.5KB).

이 프로젝트는 자체 코드와 타사 라이브러리로 구성됩니다. 당연히 이 선함을 어떻게 저장하는가에 대한 의문이 생깁니다. 나는 내 경험을 바탕으로 이 질문에 대해 조언을 하려고 노력할 것입니다.

기본 요구 사항:

  • 개발자는 수십 개의 라이브러리를 설치하는 것에 대한 걱정 없이 빠르게 작업에 착수해야 합니다.
  • 라이브러리는 다른 프로젝트에서 액세스할 수 있어야 하며, 리포지토리의 코드 중복은 피해야 합니다.
  • 특정 프로젝트 상태(새 버전, 테스터용 빌드 번호 등)를 저장할 수 있어야 합니다.

각 프로젝트마다 자신만의 저장소를 만드는 것이 좋습니다. 이를 통해 한 프로젝트를 다른 프로젝트와 명확하게 구분할 수 있으며, 필요한 경우 특정 개발자에게만 특정 저장소를 편집할 수 있는 권한을 부여하고 보관 문제를 해결할 수 있습니다. 라이브러리는 심지어 타사 라이브러리라도 별도의 프로젝트로 취급되어야 하며 별도의 저장소에 저장되어야 합니다. Qt 또는 Boost와 같은 특히 큰 라이브러리의 경우에만 예외가 발생할 수 있습니다.

Subversion을 사용하면 다른 프로젝트에 대한 프로젝트의 종속성을 설정하여 프로젝트 간의 종속성을 설정할 수 있습니다. 따라서 저장소에서 프로젝트를 받는 동시에 여러 라이브러리를 설치하고 관련성을 모니터링하여 생활을 복잡하게 하지 않고도 작업에 필요한 모든 코드를 자동으로 얻을 수 있습니다.

폴더 트렁크, 태그, 분기

Subversion은 트렁크, 태그, 분기라는 세 가지 폴더로 구성된 프로젝트 구조를 사용하는 경우가 많습니다. 그것들은 무엇을 위한 것인가요?

  • 트렁크- 개발 폴더입니다. 여기에는 항상 개발자가 사용할 수 있는 최신 버전의 코드가 포함되어 있습니다. 코드를 항상 구성 가능한 상태로 유지하는 것이 매우 중요합니다. 다른 개발자에게 어려움을 주지 않도록 프로젝트 어셈블리의 모든 고장을 가능한 한 빨리 수정해야 합니다.
  • 안에 태그특정 순간의 프로젝트 상태입니다. 예를 들어, 릴리스가 가까워지면 개발자는 특정 빈도로 고유 번호를 사용하여 빌드를 생성하기 시작하며 이는 테스터에게 전송됩니다. 현재 프로젝트의 상태는 태그 폴더에 기록되어 의미 있는 이름(예: build_723)을 지정할 수 있습니다. 이를 통해 이 빌드에는 없는 결함이 다음 빌드에서 발견된 경우 문제의 원인을 분석하고 이를 제거하기 위한 적절한 조치를 취할 수 있습니다. 여기에서 릴리스된 버전을 표시할 수도 있습니다(예: 1.0). .5. 따라서 모든 버전의 오류에 대해 사용자로부터 불만을 접수한 경우 이 버전과 관련된 코드를 사용하여 문제를 연구할 수 있습니다.
  • 가지- 임시 개발 지점. 무슨 뜻이에요? 개발자 Vasya는 일부 기능을 추가하는 작업을 받았습니다. 다른 팀 구성원의 작업을 방해하지 않기 위해 그는 Branch/vasia_task_1234에 프로젝트 사본을 생성하고 이 브랜치에서 작업하며 주기적으로 저장소의 코드를 저장합니다. 작업을 완료한 후 기본 개발 브랜치(트렁크)와 병합하고 임시 브랜치를 삭제합니다. 작업이 완료되었고, 다른 개발자의 작업을 방해하지 않고 임시 브랜치에 자신의 작업 상태를 기록할 수 있었습니다.

브랜치로 작업하고 프로젝트 상태를 태그에 기록하는 방법은 다른 게시물에서 설명하겠습니다.

버전 이름을 어떻게 지정하나요?

나는 세 개의 숫자로 구성된 버전에 번호를 매기는 방법을 제안합니다. 주요한.미성년자.마이크로, 어디:

주요한- 제품 버전을 나타내는 숫자(다른 버전 번호는 제품 간의 중요한 차이를 나타냄),
미성년자- 제품 전복(다른 숫자는 전복의 기능이 다름을 나타냄)
마이크로- 전복 내에서 오류가 수정되었음을 나타냅니다.

  1. 버그 수정만 포함된 새 버전이 출시되면 마이크로 위치의 숫자가 늘어납니다.
  2. 기능이 변경된 버전이 출시되면 마이너는 증가하고 마이크로는 0으로 재설정됩니다.
  3. 이전 제품과 크게 다른 제품의 새 버전이 출시되면 크게 증가하고 마이너 및 마이크로는 0으로 재설정됩니다.

샘플 프로젝트

프로젝트 코드 자체(project)와 두 개의 라이브러리(lib1, lib2)로 구성된 간단한 프로젝트를 생각해 보겠습니다. 세 가지 저장소의 구조:

프로젝트(예를 들어 저장소 경로를 https://server/project로 지정합니다.)

가지
태그
트렁크

lib1(https://서버/lib1)

가지
태그

lib2(https://서버/lib2)

가지
태그
트렁크

프로젝트 자체는 우리 프로젝트이며, 타사 라이브러리 lib1 버전 1.0과 프로젝트 자체와 공동으로 개발된 자체 개발 라이브러리 lib2에 의존하므로 종속성은 기본 개발 분기(트렁크)에 있습니다.

Subversion에 종속성 설치

Subversion에 프로젝트 종속성을 설치하기 위해 svn:externals 속성이 사용됩니다. 설치된 속성을 보려면 프로젝트가 있는 폴더(예: 트렁크)로 이동하여 다음 명령을 사용해야 합니다.

기본 개발 분기가 있는 폴더에 있는 동안 svn:externals 속성(자연적으로 전체 폴더에 대해)을 설정하려면( path_on_local_machine/프로젝트/트렁크) 실행하다

Subversion이 텍스트 편집기를 시작하지 않지만 환경 변수가 정의되지 않았다는 오류가 발생할 수 있습니다. SVN_EDITOR. 이는 호출될 텍스트 편집기에 대한 경로를 나타내는 이 변수를 시스템 환경에 추가해야 함을 의미합니다. 예를 들어 C:/WINDOWS/system32/notepad.exe Windows의 경우(참고 - 슬래시는 확장되어야 함) 또는 /usr/bin/vi리눅스용.

다음 명령을 사용하여 속성을 삭제할 수 있습니다.

svn 속성 svn:외부

그게 다야?

그럴 것 같습니다. 이제 저장소에서 프로젝트 코드를 가져올 때마다 라이브러리 코드가 동시에 로드됩니다. 라이브러리가 변경되면 자동으로 업데이트됩니다. 따라서 프로젝트 종속성을 등록하면 라이브러리에 대해 생각할 필요가 없으며 자동으로 업데이트 및 다운로드되며 기본 개발 브랜치에는 라이브러리가 있는 lib1 및 lib2 폴더가 포함됩니다.

다음 논리적 단계는 프로젝트와 함께 필요한 라이브러리를 자동으로 빌드하는 것입니다. 이에 대해서는 곧 크로스 플랫폼 빌드 자동화 도구인 CMake의 예를 사용하여 설명하겠습니다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: