We study a classical Bayesian mechanism design problem where a seller is selling multiple items to multiple buyers. We consider the case where the seller has costs to produce the items, and these costs are private information to the seller. How can the seller design a mechanism to maximize her profit? Two well-studied problems, revenue maximization in multi-item auctions and signaling in ad auctions, are special cases of our problem. We show that there exists a simple mechanism whose profit is at least 1 44 of the optimal profit for multiple buyers with matroid-rank valuation functions. When there is a single buyer, the approximation factor is 11 for general constraint-additive valuations and 6 for additive valuations. Our result holds even when the seller's costs are correlated across items.We introduce a new class of mechanisms called permit-selling mechanisms. For single buyer case these mechanisms are quite simple: there are two stages. For each item j, we create a separate permit that allows the buyer to purchase the item in the second stage. In the first stage, we sell the permits without revealing any information about the costs. In the second stage, the seller reveals all the costs, and the buyer can buy item j by paying the item price if the buyer has purchased the permit for item j in the first stage. We show that either selling the permits separately or as a grand bundle suffices to achieve the constant factor approximation to the optimal profit (6 for additive, and 11 for constrained additive). For multiple buyers, we sell the permits sequentially and obtain the constant factor approximation. Our proof is enabled by constructing a benchmark for the optimal profit by combining a novel dual solution with the existing ex-ante relaxation technique.