{"action":"created","comment":{"url":"https://api.github.com/repos/hyperledger/fabric/pulls/comments/70893441","id":70893441,"diff_hunk":"@@ -0,0 +1,182 @@\n+## Certificate Authority (CA) Setup\n+\n+The _Certificate Authority_ (CA) provides a number of certificate services to users of a blockchain.  More specifically, these services relate to _user enrollment_, _transactions_ invoked on the blockchain, and _TLS_-secured connections between users or components of the blockchain.\n+\n+This guide builds on either the [fabric developer's setup](../dev-setup/devenv.md) or the prerequisites articulated in the [fabric network setup](Network-setup.md) guide. If you have not already set up your environment with one of those guides, please do so before continuing.\n+\n+### Enrollment Certificate Authority\n+\n+The _enrollment certificate authority_ (ECA) allows new users to register with the blockchain network and enables registered users to request an _enrollment certificate pair_.  One certificate is for data signing, one is for data encryption.  The public keys to be embedded in the certificates have to be of type ECDSA, whereby the key for data encryption is then converted by the user to be used in an [ECIES](https://en.wikipedia.org/wiki/Integrated_Encryption_Scheme) (Elliptic Curve Integrated Encryption System) fashion.\n+\n+### Transaction Certificate Authority\n+\n+Once a user is enrolled, he or she can also request _transaction certificates_ from the _transaction certificate authority_ (TCA). These certificates are to be used for deploying Chaincode and for invoking Chaincode transactions on the blockchain.  Although a single _transaction certificate_ can be used for multiple transactions, for privacy reasons it is recommended that a new _transaction certificate_ be used for each transaction.\n+\n+### TLS Certificate Authority\n+\n+In addition to _enrollment certificates_ and _transaction certificates_, users will need _TLS certificates_ to secure their communication channels.  _TLS certificates_ can be requested from the _TLS certificate authority_ (TLSCA).\n+\n+## Configuration\n+\n+All CA services are provided by a single process, which can be configured by setting parameters in the CA configuration file `membersrvc.yaml`, which is located in the same directory as the CA binary.  More specifically, the following parameters can be set:\n+\n+- `server.gomaxprocs`: limits the number of operating system threads used by the CA.\n+- `server.rootpath`: the root path of the directory where the CA stores its state.\n+- `server.cadir`: the name of the directory where the CA stores its state.\n+- `server.port`: the port at which all CA services listen (multiplexing of services over the same port is provided by [GRPC](http://www.grpc.io)).\n+\n+Furthermore, logging levels can be enabled/disabled by adjusting the following settings:\n+\n+- `logging.trace` (off by default, useful for debugging the code only)\n+- `logging.info`\n+- `logging.warning`\n+- `logging.error`\n+- `logging.panic`\n+\n+Alternatively, these fields can be set via environment variables, which---if set---have precedence over entries in the yaml file.  The corresponding environment variables are named as follows:","path":"docs/Setup/ca-setup.md","position":36,"original_position":36,"commit_id":"8599f1ae8150dd58d5d0716343095ede6c9ed025","original_commit_id":"e30a13af9978b8ec527dff10fda147a1f823e4ad","user":{"login":"christo4ferris","id":3630697,"avatar_url":"https://avatars.githubusercontent.com/u/3630697?v=3","gravatar_id":"","url":"https://api.github.com/users/christo4ferris","html_url":"https://github.com/christo4ferris","followers_url":"https://api.github.com/users/christo4ferris/followers","following_url":"https://api.github.com/users/christo4ferris/following{/other_user}","gists_url":"https://api.github.com/users/christo4ferris/gists{/gist_id}","starred_url":"https://api.github.com/users/christo4ferris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christo4ferris/subscriptions","organizations_url":"https://api.github.com/users/christo4ferris/orgs","repos_url":"https://api.github.com/users/christo4ferris/repos","events_url":"https://api.github.com/users/christo4ferris/events{/privacy}","received_events_url":"https://api.github.com/users/christo4ferris/received_events","type":"User","site_admin":false},"body":"@srderson  this two spaces thing is not my editing/editor;-) happy to fix them, though.","created_at":"2016-07-14T22:09:55Z","updated_at":"2016-07-14T22:09:56Z","html_url":"https://github.com/hyperledger/fabric/pull/2150#discussion_r70893441","pull_request_url":"https://api.github.com/repos/hyperledger/fabric/pulls/2150","_links":{"self":{"href":"https://api.github.com/repos/hyperledger/fabric/pulls/comments/70893441"},"html":{"href":"https://github.com/hyperledger/fabric/pull/2150#discussion_r70893441"},"pull_request":{"href":"https://api.github.com/repos/hyperledger/fabric/pulls/2150"}}},"pull_request":{"url":"https://api.github.com/repos/hyperledger/fabric/pulls/2150","id":76831155,"html_url":"https://github.com/hyperledger/fabric/pull/2150","diff_url":"https://github.com/hyperledger/fabric/pull/2150.diff","patch_url":"https://github.com/hyperledger/fabric/pull/2150.patch","issue_url":"https://api.github.com/repos/hyperledger/fabric/issues/2150","number":2150,"state":"open","locked":false,"title":"refactor documentation ","user":{"login":"christo4ferris","id":3630697,"avatar_url":"https://avatars.githubusercontent.com/u/3630697?v=3","gravatar_id":"","url":"https://api.github.com/users/christo4ferris","html_url":"https://github.com/christo4ferris","followers_url":"https://api.github.com/users/christo4ferris/followers","following_url":"https://api.github.com/users/christo4ferris/following{/other_user}","gists_url":"https://api.github.com/users/christo4ferris/gists{/gist_id}","starred_url":"https://api.github.com/users/christo4ferris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christo4ferris/subscriptions","organizations_url":"https://api.github.com/users/christo4ferris/orgs","repos_url":"https://api.github.com/users/christo4ferris/repos","events_url":"https://api.github.com/users/christo4ferris/events{/privacy}","received_events_url":"https://api.github.com/users/christo4ferris/received_events","type":"User","site_admin":false},"body":"<!-- Provide a general summary of your changes in the Title above -->\r\n\r\n## Description \r\nrefactor of docs to make the use of fabric components more accessible to mere mortals and without requiring that binaries and images be built by the user. This turned into a major refactoring exercise. \r\n\r\n## Motivation and Context\r\n<!-- Why is this change required? What problem does it solve? -->\r\n<!-- If it fixes an open issue, please link to the issue here. -->\r\nThere were a number of things that needed to be addressed. First, there was lots of redundant documentation about how to start components etc that was either conflicting, or at the very least inconsistent. I attempted to refactor things so that there is setup, build, and operational separation. \r\n\r\nMore could be and should be done, but I don't think it makes sense to leave this outstanding any longer.\r\n\r\nFixes #2144 \r\n\r\n## How Has This Been Tested?\r\n<!-- If this PR does not contain a new test case, explain why. -->\r\n<!-- Describe in detail how you tested your changes. -->\r\nI have gone through and tested the various directions personally.\r\n\r\n## Checklist:\r\n<!-- To check a box, and an 'x': [x] -->\r\n<!-- To uncheck box, add a space: [ ] -->\r\n<!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->\r\n- [x] I have added a [Signed-off-by](https://github.com/hyperledger/fabric/blob/master/CONTRIBUTING.md#legal-stuff).\r\n- [x] I have either added documentation to cover my changes or this change requires no new documentation.\r\n- [x] I have either added unit tests to cover my changes or this change requires no new tests.\r\n- [] I have run [golint](https://github.com/golang/lint) and have fixed valid warnings in code I have added or modified. This tool generates false positives so you may choose to ignore some warnings. The goal is clean, consistent, and readable code.\r\n\r\n<!-- The continuous integration build process will run [make checks](https://github.com/hyperledger/fabric/blob/master/Makefile#L22) to confirm that tests pass and that code quality meets minimum standards. You may optionally run this locally as PRs will not be accepted until they pass. -->\r\n\r\nSigned-off-by: Christopher Ferris <chrisfer@us.ibm.com>\r\n","created_at":"2016-07-09T00:22:11Z","updated_at":"2016-07-14T22:09:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"98caac272d803fad31db151b6840427bac766643","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/hyperledger/fabric/pulls/2150/commits","review_comments_url":"https://api.github.com/repos/hyperledger/fabric/pulls/2150/comments","review_comment_url":"https://api.github.com/repos/hyperledger/fabric/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hyperledger/fabric/issues/2150/comments","statuses_url":"https://api.github.com/repos/hyperledger/fabric/statuses/8599f1ae8150dd58d5d0716343095ede6c9ed025","head":{"label":"christo4ferris:issue-2144","ref":"issue-2144","sha":"8599f1ae8150dd58d5d0716343095ede6c9ed025","user":{"login":"christo4ferris","id":3630697,"avatar_url":"https://avatars.githubusercontent.com/u/3630697?v=3","gravatar_id":"","url":"https://api.github.com/users/christo4ferris","html_url":"https://github.com/christo4ferris","followers_url":"https://api.github.com/users/christo4ferris/followers","following_url":"https://api.github.com/users/christo4ferris/following{/other_user}","gists_url":"https://api.github.com/users/christo4ferris/gists{/gist_id}","starred_url":"https://api.github.com/users/christo4ferris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christo4ferris/subscriptions","organizations_url":"https://api.github.com/users/christo4ferris/orgs","repos_url":"https://api.github.com/users/christo4ferris/repos","events_url":"https://api.github.com/users/christo4ferris/events{/privacy}","received_events_url":"https://api.github.com/users/christo4ferris/received_events","type":"User","site_admin":false},"repo":{"id":62673879,"name":"fabric","full_name":"christo4ferris/fabric","owner":{"login":"christo4ferris","id":3630697,"avatar_url":"https://avatars.githubusercontent.com/u/3630697?v=3","gravatar_id":"","url":"https://api.github.com/users/christo4ferris","html_url":"https://github.com/christo4ferris","followers_url":"https://api.github.com/users/christo4ferris/followers","following_url":"https://api.github.com/users/christo4ferris/following{/other_user}","gists_url":"https://api.github.com/users/christo4ferris/gists{/gist_id}","starred_url":"https://api.github.com/users/christo4ferris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christo4ferris/subscriptions","organizations_url":"https://api.github.com/users/christo4ferris/orgs","repos_url":"https://api.github.com/users/christo4ferris/repos","events_url":"https://api.github.com/users/christo4ferris/events{/privacy}","received_events_url":"https://api.github.com/users/christo4ferris/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/christo4ferris/fabric","description":"Fabric is a blockchain project in Incubation proposed to the community and documented at https://goo.gl/RYQZ5N.  Information on what Incubation entails can be found in the Hyperledger Project Lifecycle document (https://goo.gl/4edNRc)","fork":true,"url":"https://api.github.com/repos/christo4ferris/fabric","forks_url":"https://api.github.com/repos/christo4ferris/fabric/forks","keys_url":"https://api.github.com/repos/christo4ferris/fabric/keys{/key_id}","collaborators_url":"https://api.github.com/repos/christo4ferris/fabric/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/christo4ferris/fabric/teams","hooks_url":"https://api.github.com/repos/christo4ferris/fabric/hooks","issue_events_url":"https://api.github.com/repos/christo4ferris/fabric/issues/events{/number}","events_url":"https://api.github.com/repos/christo4ferris/fabric/events","assignees_url":"https://api.github.com/repos/christo4ferris/fabric/assignees{/user}","branches_url":"https://api.github.com/repos/christo4ferris/fabric/branches{/branch}","tags_url":"https://api.github.com/repos/christo4ferris/fabric/tags","blobs_url":"https://api.github.com/repos/christo4ferris/fabric/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/christo4ferris/fabric/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/christo4ferris/fabric/git/refs{/sha}","trees_url":"https://api.github.com/repos/christo4ferris/fabric/git/trees{/sha}","statuses_url":"https://api.github.com/repos/christo4ferris/fabric/statuses/{sha}","languages_url":"https://api.github.com/repos/christo4ferris/fabric/languages","stargazers_url":"https://api.github.com/repos/christo4ferris/fabric/stargazers","contributors_url":"https://api.github.com/repos/christo4ferris/fabric/contributors","subscribers_url":"https://api.github.com/repos/christo4ferris/fabric/subscribers","subscription_url":"https://api.github.com/repos/christo4ferris/fabric/subscription","commits_url":"https://api.github.com/repos/christo4ferris/fabric/commits{/sha}","git_commits_url":"https://api.github.com/repos/christo4ferris/fabric/git/commits{/sha}","comments_url":"https://api.github.com/repos/christo4ferris/fabric/comments{/number}","issue_comment_url":"https://api.github.com/repos/christo4ferris/fabric/issues/comments{/number}","contents_url":"https://api.github.com/repos/christo4ferris/fabric/contents/{+path}","compare_url":"https://api.github.com/repos/christo4ferris/fabric/compare/{base}...{head}","merges_url":"https://api.github.com/repos/christo4ferris/fabric/merges","archive_url":"https://api.github.com/repos/christo4ferris/fabric/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/christo4ferris/fabric/downloads","issues_url":"https://api.github.com/repos/christo4ferris/fabric/issues{/number}","pulls_url":"https://api.github.com/repos/christo4ferris/fabric/pulls{/number}","milestones_url":"https://api.github.com/repos/christo4ferris/fabric/milestones{/number}","notifications_url":"https://api.github.com/repos/christo4ferris/fabric/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/christo4ferris/fabric/labels{/name}","releases_url":"https://api.github.com/repos/christo4ferris/fabric/releases{/id}","deployments_url":"https://api.github.com/repos/christo4ferris/fabric/deployments","created_at":"2016-07-05T22:30:24Z","updated_at":"2016-07-05T22:30:27Z","pushed_at":"2016-07-14T22:08:01Z","git_url":"git://github.com/christo4ferris/fabric.git","ssh_url":"git@github.com:christo4ferris/fabric.git","clone_url":"https://github.com/christo4ferris/fabric.git","svn_url":"https://github.com/christo4ferris/fabric","homepage":"","size":45628,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"hyperledger:master","ref":"master","sha":"e5070c8096ac46d1fc9b26265f17bfb48272f194","user":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars.githubusercontent.com/u/7657900?v=3","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"repo":{"id":42975662,"name":"fabric","full_name":"hyperledger/fabric","owner":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars.githubusercontent.com/u/7657900?v=3","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hyperledger/fabric","description":"Fabric is a blockchain project in Incubation proposed to the community and documented at https://goo.gl/RYQZ5N.  Information on what Incubation entails can be found in the Hyperledger Project Lifecycle document (https://goo.gl/4edNRc)","fork":false,"url":"https://api.github.com/repos/hyperledger/fabric","forks_url":"https://api.github.com/repos/hyperledger/fabric/forks","keys_url":"https://api.github.com/repos/hyperledger/fabric/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hyperledger/fabric/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hyperledger/fabric/teams","hooks_url":"https://api.github.com/repos/hyperledger/fabric/hooks","issue_events_url":"https://api.github.com/repos/hyperledger/fabric/issues/events{/number}","events_url":"https://api.github.com/repos/hyperledger/fabric/events","assignees_url":"https://api.github.com/repos/hyperledger/fabric/assignees{/user}","branches_url":"https://api.github.com/repos/hyperledger/fabric/branches{/branch}","tags_url":"https://api.github.com/repos/hyperledger/fabric/tags","blobs_url":"https://api.github.com/repos/hyperledger/fabric/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hyperledger/fabric/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hyperledger/fabric/git/refs{/sha}","trees_url":"https://api.github.com/repos/hyperledger/fabric/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hyperledger/fabric/statuses/{sha}","languages_url":"https://api.github.com/repos/hyperledger/fabric/languages","stargazers_url":"https://api.github.com/repos/hyperledger/fabric/stargazers","contributors_url":"https://api.github.com/repos/hyperledger/fabric/contributors","subscribers_url":"https://api.github.com/repos/hyperledger/fabric/subscribers","subscription_url":"https://api.github.com/repos/hyperledger/fabric/subscription","commits_url":"https://api.github.com/repos/hyperledger/fabric/commits{/sha}","git_commits_url":"https://api.github.com/repos/hyperledger/fabric/git/commits{/sha}","comments_url":"https://api.github.com/repos/hyperledger/fabric/comments{/number}","issue_comment_url":"https://api.github.com/repos/hyperledger/fabric/issues/comments{/number}","contents_url":"https://api.github.com/repos/hyperledger/fabric/contents/{+path}","compare_url":"https://api.github.com/repos/hyperledger/fabric/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hyperledger/fabric/merges","archive_url":"https://api.github.com/repos/hyperledger/fabric/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hyperledger/fabric/downloads","issues_url":"https://api.github.com/repos/hyperledger/fabric/issues{/number}","pulls_url":"https://api.github.com/repos/hyperledger/fabric/pulls{/number}","milestones_url":"https://api.github.com/repos/hyperledger/fabric/milestones{/number}","notifications_url":"https://api.github.com/repos/hyperledger/fabric/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hyperledger/fabric/labels{/name}","releases_url":"https://api.github.com/repos/hyperledger/fabric/releases{/id}","deployments_url":"https://api.github.com/repos/hyperledger/fabric/deployments","created_at":"2015-09-23T03:17:14Z","updated_at":"2016-07-14T21:42:28Z","pushed_at":"2016-07-14T22:08:02Z","git_url":"git://github.com/hyperledger/fabric.git","ssh_url":"git@github.com:hyperledger/fabric.git","clone_url":"https://github.com/hyperledger/fabric.git","svn_url":"https://github.com/hyperledger/fabric","homepage":"","size":89143,"stargazers_count":930,"watchers_count":930,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":889,"mirror_url":null,"open_issues_count":402,"forks":889,"open_issues":402,"watchers":930,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hyperledger/fabric/pulls/2150"},"html":{"href":"https://github.com/hyperledger/fabric/pull/2150"},"issue":{"href":"https://api.github.com/repos/hyperledger/fabric/issues/2150"},"comments":{"href":"https://api.github.com/repos/hyperledger/fabric/issues/2150/comments"},"review_comments":{"href":"https://api.github.com/repos/hyperledger/fabric/pulls/2150/comments"},"review_comment":{"href":"https://api.github.com/repos/hyperledger/fabric/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hyperledger/fabric/pulls/2150/commits"},"statuses":{"href":"https://api.github.com/repos/hyperledger/fabric/statuses/8599f1ae8150dd58d5d0716343095ede6c9ed025"}}}}
{"actor":{"display_login":"christo4ferris"}}